@nanahoshi/mona-ui 0.1.0 → 0.2.0
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.
- package/auto-complete/package.json +4 -0
- package/avatar/package.json +4 -0
- package/breadcrumb/package.json +4 -0
- package/button/package.json +4 -0
- package/button-group/package.json +4 -0
- package/calendar/package.json +4 -0
- package/check-box/package.json +4 -0
- package/chip/package.json +4 -0
- package/circular-progress-bar/package.json +4 -0
- package/color-gradient/package.json +4 -0
- package/color-palette/package.json +4 -0
- package/color-picker/package.json +4 -0
- package/combo-box/package.json +4 -0
- package/common/package.json +4 -0
- package/contextmenu/package.json +4 -0
- package/date-input/package.json +4 -0
- package/date-picker/package.json +4 -0
- package/datetime-picker/package.json +4 -0
- package/dialog/package.json +4 -0
- package/dropdown-button/package.json +4 -0
- package/dropdown-list/package.json +4 -0
- package/dropdowns/package.json +4 -0
- package/editor/package.json +4 -0
- package/expansion-panel/package.json +4 -0
- package/fesm2022/nanahoshi-mona-ui-auto-complete.mjs +40 -55
- package/fesm2022/nanahoshi-mona-ui-breadcrumb.mjs +24 -58
- package/fesm2022/nanahoshi-mona-ui-button-group.mjs +37 -48
- package/fesm2022/nanahoshi-mona-ui-button.mjs +130 -129
- package/fesm2022/nanahoshi-mona-ui-calendar.mjs +69 -165
- package/fesm2022/nanahoshi-mona-ui-check-box.mjs +81 -128
- package/fesm2022/nanahoshi-mona-ui-chip.mjs +102 -112
- package/fesm2022/nanahoshi-mona-ui-circular-progress-bar.mjs +11 -25
- package/fesm2022/nanahoshi-mona-ui-color-gradient.mjs +41 -92
- package/fesm2022/nanahoshi-mona-ui-color-palette.mjs +27 -49
- package/fesm2022/nanahoshi-mona-ui-color-picker.mjs +64 -65
- package/fesm2022/nanahoshi-mona-ui-combo-box.mjs +39 -61
- package/fesm2022/nanahoshi-mona-ui-date-input.mjs +12 -15
- package/fesm2022/nanahoshi-mona-ui-date-picker.mjs +44 -33
- package/fesm2022/nanahoshi-mona-ui-datetime-picker.mjs +58 -60
- package/fesm2022/nanahoshi-mona-ui-dialog.mjs +52 -165
- package/fesm2022/nanahoshi-mona-ui-dropdown-list.mjs +36 -59
- package/fesm2022/nanahoshi-mona-ui-dropdowns.mjs +56 -61
- package/fesm2022/nanahoshi-mona-ui-editor.mjs +302 -81
- package/fesm2022/nanahoshi-mona-ui-expansion-panel.mjs +33 -84
- package/fesm2022/nanahoshi-mona-ui-fieldset.mjs +12 -45
- package/fesm2022/nanahoshi-mona-ui-filter.mjs +18 -48
- package/fesm2022/{nanahoshi-mona-ui-grid-grid-footer-cell.component-B9SQH5N-.mjs → nanahoshi-mona-ui-grid-grid-footer-cell.component-B6FBLtrr.mjs} +14 -14
- package/fesm2022/{nanahoshi-mona-ui-grid-grid-footer-table-cell.directive-DlLwcCFT.mjs → nanahoshi-mona-ui-grid-grid-footer-table-cell.directive-OJe4UYuw.mjs} +4 -8
- package/fesm2022/nanahoshi-mona-ui-grid-grid-list.component-DCd8K6ng.mjs +121 -0
- package/fesm2022/{nanahoshi-mona-ui-grid-grid-toggle.component-DIUutx9s.mjs → nanahoshi-mona-ui-grid-grid-toggle.component-Dl8Hlkhj.mjs} +26 -55
- package/fesm2022/nanahoshi-mona-ui-grid-grid-virtual-list.component-C5FRZlvv.mjs +231 -0
- package/fesm2022/{nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-C3eZIaJK.mjs → nanahoshi-mona-ui-grid-nanahoshi-mona-ui-grid-BRZUd8cE.mjs} +167 -451
- package/fesm2022/nanahoshi-mona-ui-grid.mjs +1 -1
- package/fesm2022/nanahoshi-mona-ui-internal-indicator-icon.mjs +10 -28
- package/fesm2022/nanahoshi-mona-ui-internal-list.mjs +57 -87
- package/fesm2022/nanahoshi-mona-ui-internal-tree.mjs +48 -139
- package/fesm2022/nanahoshi-mona-ui-internal.mjs +29 -1
- package/fesm2022/nanahoshi-mona-ui-list-box.mjs +10 -32
- package/fesm2022/nanahoshi-mona-ui-list-view.mjs +8 -21
- package/fesm2022/nanahoshi-mona-ui-menubar.mjs +50 -156
- package/fesm2022/nanahoshi-mona-ui-multi-select.mjs +40 -69
- package/fesm2022/nanahoshi-mona-ui-notification.mjs +32 -116
- package/fesm2022/nanahoshi-mona-ui-numeric-text-box.mjs +81 -107
- package/fesm2022/nanahoshi-mona-ui-pager.mjs +33 -85
- package/fesm2022/nanahoshi-mona-ui-placeholder.mjs +12 -34
- package/fesm2022/nanahoshi-mona-ui-popover.mjs +31 -52
- package/fesm2022/nanahoshi-mona-ui-popup-menu.mjs +38 -110
- package/fesm2022/nanahoshi-mona-ui-popup.mjs +4 -4
- package/fesm2022/nanahoshi-mona-ui-progress-bar.mjs +21 -62
- package/fesm2022/nanahoshi-mona-ui-radio-button.mjs +66 -111
- package/fesm2022/nanahoshi-mona-ui-scroll-view.mjs +60 -151
- package/fesm2022/nanahoshi-mona-ui-slider.mjs +117 -173
- package/fesm2022/nanahoshi-mona-ui-split-button.mjs +32 -45
- package/fesm2022/nanahoshi-mona-ui-splitter.mjs +29 -64
- package/fesm2022/nanahoshi-mona-ui-stepper.mjs +38 -101
- package/fesm2022/nanahoshi-mona-ui-switch.mjs +58 -79
- package/fesm2022/nanahoshi-mona-ui-tabs.mjs +42 -118
- package/fesm2022/nanahoshi-mona-ui-text-area.mjs +29 -37
- package/fesm2022/nanahoshi-mona-ui-text-box.mjs +60 -81
- package/fesm2022/nanahoshi-mona-ui-theme.mjs +1111 -269
- package/fesm2022/nanahoshi-mona-ui-time-picker.mjs +45 -39
- package/fesm2022/nanahoshi-mona-ui-time-selector.mjs +45 -109
- package/fesm2022/nanahoshi-mona-ui-tooltip.mjs +54 -82
- package/fesm2022/nanahoshi-mona-ui-tree-view.mjs +2 -2
- package/fesm2022/nanahoshi-mona-ui-window.mjs +35 -115
- package/fieldset/package.json +4 -0
- package/filter/package.json +4 -0
- package/grid/package.json +4 -0
- package/internal/filter-input/package.json +4 -0
- package/internal/indicator-icon/package.json +4 -0
- package/internal/list/package.json +4 -0
- package/internal/package.json +4 -0
- package/internal/tree/package.json +4 -0
- package/list/package.json +4 -0
- package/list-box/package.json +4 -0
- package/list-view/package.json +4 -0
- package/menubar/package.json +4 -0
- package/multi-select/package.json +4 -0
- package/notification/package.json +4 -0
- package/numeric-text-box/package.json +4 -0
- package/package.json +31 -5
- package/pager/package.json +4 -0
- package/placeholder/package.json +4 -0
- package/popover/package.json +4 -0
- package/popup/package.json +4 -0
- package/popup-menu/package.json +4 -0
- package/progress-bar/package.json +4 -0
- package/query/package.json +4 -0
- package/radio-button/package.json +4 -0
- package/scroll-view/package.json +4 -0
- package/slider/package.json +4 -0
- package/split-button/package.json +4 -0
- package/splitter/package.json +4 -0
- package/stepper/package.json +4 -0
- package/switch/package.json +4 -0
- package/tabs/package.json +4 -0
- package/text-area/package.json +4 -0
- package/text-box/package.json +4 -0
- package/theme/package.json +4 -0
- package/time-picker/package.json +4 -0
- package/time-selector/package.json +4 -0
- package/tooltip/package.json +4 -0
- package/tree-view/package.json +4 -0
- package/types/nanahoshi-mona-ui-auto-complete.d.ts +6 -7
- package/types/nanahoshi-mona-ui-breadcrumb.d.ts +4 -6
- package/types/nanahoshi-mona-ui-button-group.d.ts +2 -3
- package/types/nanahoshi-mona-ui-button.d.ts +6 -6
- package/types/nanahoshi-mona-ui-calendar.d.ts +21 -22
- package/types/nanahoshi-mona-ui-check-box.d.ts +6 -9
- package/types/nanahoshi-mona-ui-chip.d.ts +2 -3
- package/types/nanahoshi-mona-ui-circular-progress-bar.d.ts +2 -4
- package/types/nanahoshi-mona-ui-color-gradient.d.ts +10 -11
- package/types/nanahoshi-mona-ui-color-palette.d.ts +4 -5
- package/types/nanahoshi-mona-ui-color-picker.d.ts +6 -8
- package/types/nanahoshi-mona-ui-combo-box.d.ts +6 -7
- package/types/nanahoshi-mona-ui-date-input.d.ts +2 -3
- package/types/nanahoshi-mona-ui-date-picker.d.ts +2 -3
- package/types/nanahoshi-mona-ui-dialog.d.ts +7 -8
- package/types/nanahoshi-mona-ui-dropdown-list.d.ts +6 -7
- package/types/nanahoshi-mona-ui-dropdowns.d.ts +2 -3
- package/types/nanahoshi-mona-ui-editor.d.ts +17 -17
- package/types/nanahoshi-mona-ui-expansion-panel.d.ts +8 -10
- package/types/nanahoshi-mona-ui-fieldset.d.ts +6 -8
- package/types/nanahoshi-mona-ui-filter.d.ts +3 -4
- package/types/nanahoshi-mona-ui-grid.d.ts +16 -17
- package/types/nanahoshi-mona-ui-internal-indicator-icon.d.ts +0 -1
- package/types/nanahoshi-mona-ui-internal-tree.d.ts +16 -16
- package/types/nanahoshi-mona-ui-internal.d.ts +8 -1
- package/types/nanahoshi-mona-ui-list-box.d.ts +4 -5
- package/types/nanahoshi-mona-ui-list-view.d.ts +2 -3
- package/types/nanahoshi-mona-ui-menubar.d.ts +7 -8
- package/types/nanahoshi-mona-ui-multi-select.d.ts +8 -9
- package/types/nanahoshi-mona-ui-numeric-text-box.d.ts +2 -3
- package/types/nanahoshi-mona-ui-pager.d.ts +6 -7
- package/types/nanahoshi-mona-ui-placeholder.d.ts +4 -6
- package/types/nanahoshi-mona-ui-popover.d.ts +8 -9
- package/types/nanahoshi-mona-ui-popup-menu.d.ts +12 -13
- package/types/nanahoshi-mona-ui-progress-bar.d.ts +8 -9
- package/types/nanahoshi-mona-ui-radio-button.d.ts +8 -11
- package/types/nanahoshi-mona-ui-scroll-view.d.ts +18 -20
- package/types/nanahoshi-mona-ui-slider.d.ts +18 -18
- package/types/nanahoshi-mona-ui-split-button.d.ts +2 -3
- package/types/nanahoshi-mona-ui-splitter.d.ts +6 -8
- package/types/nanahoshi-mona-ui-stepper.d.ts +13 -14
- package/types/nanahoshi-mona-ui-switch.d.ts +6 -7
- package/types/nanahoshi-mona-ui-tabs.d.ts +15 -17
- package/types/nanahoshi-mona-ui-text-area.d.ts +2 -4
- package/types/nanahoshi-mona-ui-text-box.d.ts +4 -6
- package/types/nanahoshi-mona-ui-theme.d.ts +111 -12
- package/types/nanahoshi-mona-ui-time-picker.d.ts +2 -3
- package/types/nanahoshi-mona-ui-time-selector.d.ts +10 -11
- package/types/nanahoshi-mona-ui-tooltip.d.ts +4 -5
- package/types/nanahoshi-mona-ui-window.d.ts +16 -17
- package/window/package.json +4 -0
- package/fesm2022/nanahoshi-mona-ui-grid-grid-list.component-Dgea-O0X.mjs +0 -130
- package/fesm2022/nanahoshi-mona-ui-grid-grid-virtual-list.component-DRHycGIh.mjs +0 -240
|
@@ -7,7 +7,6 @@ import { ButtonDirective } from '@nanahoshi/mona-ui/button';
|
|
|
7
7
|
import { PreventableEvent, ContainsPipe } from '@nanahoshi/mona-ui/common';
|
|
8
8
|
import { ListService } from '@nanahoshi/mona-ui/internal/list';
|
|
9
9
|
import { ListViewComponent, ListViewSelectableDirective, ListViewItemTemplateDirective, ListViewNavigableDirective, ListViewNoDataTemplateDirective, ListViewFooterTemplateDirective, ListViewHeaderTemplateDirective } from '@nanahoshi/mona-ui/list-view';
|
|
10
|
-
import { ThemeService } from '@nanahoshi/mona-ui/theme';
|
|
11
10
|
import { ImmutableList } from '@mirei/ts-collections';
|
|
12
11
|
import { Subject, ReplaySubject, sample, delay, filter, tap, scan, startWith, switchMap } from 'rxjs';
|
|
13
12
|
import { cva } from 'class-variance-authority';
|
|
@@ -133,9 +132,9 @@ class ListBoxTransferEvent extends PreventableEvent {
|
|
|
133
132
|
}
|
|
134
133
|
}
|
|
135
134
|
|
|
136
|
-
const
|
|
137
|
-
flex gap-1
|
|
138
|
-
[&_mona-list-view]:w-full
|
|
135
|
+
const listBoxBaseThemeVariants = cva(`
|
|
136
|
+
flex gap-1
|
|
137
|
+
[&_mona-list-view]:w-full
|
|
139
138
|
`, {
|
|
140
139
|
variants: {
|
|
141
140
|
direction: {
|
|
@@ -171,9 +170,9 @@ const listBoxBaseVariants = cva(`
|
|
|
171
170
|
}
|
|
172
171
|
]
|
|
173
172
|
});
|
|
174
|
-
const
|
|
175
|
-
flex gap-1
|
|
176
|
-
items-center justify-center
|
|
173
|
+
const listBoxToolbarThemeVariants = cva(`
|
|
174
|
+
flex gap-1
|
|
175
|
+
items-center justify-center
|
|
177
176
|
`, {
|
|
178
177
|
variants: {
|
|
179
178
|
direction: {
|
|
@@ -183,37 +182,18 @@ const listBoxToolbarVariants = cva(`
|
|
|
183
182
|
}
|
|
184
183
|
});
|
|
185
184
|
|
|
186
|
-
const listBoxBaseThemeVariants = (theme) => {
|
|
187
|
-
switch (theme) {
|
|
188
|
-
case "mona":
|
|
189
|
-
return listBoxBaseVariants;
|
|
190
|
-
default:
|
|
191
|
-
return listBoxBaseVariants;
|
|
192
|
-
}
|
|
193
|
-
};
|
|
194
|
-
const listBoxToolbarThemeVariants = (theme) => {
|
|
195
|
-
switch (theme) {
|
|
196
|
-
case "mona":
|
|
197
|
-
return listBoxToolbarVariants;
|
|
198
|
-
default:
|
|
199
|
-
return listBoxToolbarVariants;
|
|
200
|
-
}
|
|
201
|
-
};
|
|
202
|
-
|
|
203
185
|
class ListBoxComponent {
|
|
204
186
|
#dataStateChange$;
|
|
205
187
|
#destroyRef;
|
|
206
188
|
#hostElementRef;
|
|
207
189
|
#listService;
|
|
208
190
|
#notifySelectionChange$;
|
|
209
|
-
#themeService;
|
|
210
191
|
constructor() {
|
|
211
192
|
this.#dataStateChange$ = new Subject();
|
|
212
193
|
this.#destroyRef = inject(DestroyRef);
|
|
213
194
|
this.#hostElementRef = inject(ElementRef);
|
|
214
195
|
this.#listService = inject(ListService);
|
|
215
196
|
this.#notifySelectionChange$ = new ReplaySubject(1);
|
|
216
|
-
this.#themeService = inject(ThemeService);
|
|
217
197
|
/**
|
|
218
198
|
* The list box (`this` or the connected list box) that currently holds the selection; falling back to `this`
|
|
219
199
|
* when neither side has a selection. Used by actions that make sense to run on `this` even with no selection
|
|
@@ -232,14 +212,13 @@ class ListBoxComponent {
|
|
|
232
212
|
}, /* @ts-ignore */
|
|
233
213
|
...(ngDevMode ? [{ debugName: "activeListBox" }] : /* istanbul ignore next */ []));
|
|
234
214
|
this.baseClasses = computed(() => {
|
|
235
|
-
const theme = this.#themeService.theme();
|
|
236
215
|
const rounded = this.rounded();
|
|
237
216
|
const size = this.size();
|
|
238
217
|
const toolbarOptions = this.toolbarOptions();
|
|
239
218
|
const position = toolbarOptions?.position ?? "right";
|
|
240
219
|
const direction = position === "left" || position === "right" ? "horizontal" : "vertical";
|
|
241
220
|
const reversed = position === "left" || position === "top";
|
|
242
|
-
return listBoxBaseThemeVariants(
|
|
221
|
+
return listBoxBaseThemeVariants({ direction, reversed, rounded, size });
|
|
243
222
|
}, /* @ts-ignore */
|
|
244
223
|
...(ngDevMode ? [{ debugName: "baseClasses" }] : /* istanbul ignore next */ []));
|
|
245
224
|
this.footerTemplate = contentChild(ListBoxFooterTemplateDirective, { ...(ngDevMode ? { debugName: "footerTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef });
|
|
@@ -266,11 +245,10 @@ class ListBoxComponent {
|
|
|
266
245
|
}, /* @ts-ignore */
|
|
267
246
|
...(ngDevMode ? [{ debugName: "selectableOptions" }] : /* istanbul ignore next */ []));
|
|
268
247
|
this.toolbarClasses = computed(() => {
|
|
269
|
-
const theme = this.#themeService.theme();
|
|
270
248
|
const toolbarOptions = this.toolbarOptions();
|
|
271
249
|
const position = toolbarOptions?.position ?? "right";
|
|
272
250
|
const direction = position === "left" || position === "right" ? "vertical" : "horizontal";
|
|
273
|
-
return listBoxToolbarThemeVariants(
|
|
251
|
+
return listBoxToolbarThemeVariants({ direction });
|
|
274
252
|
}, /* @ts-ignore */
|
|
275
253
|
...(ngDevMode ? [{ debugName: "toolbarClasses" }] : /* istanbul ignore next */ []));
|
|
276
254
|
this.toolbarOptions = computed(() => {
|
|
@@ -588,7 +566,7 @@ class ListBoxComponent {
|
|
|
588
566
|
return { actions, position };
|
|
589
567
|
}
|
|
590
568
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ListBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
591
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: ListBoxComponent, isStandalone: true, selector: "mona-list-box", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, connectedList: { classPropertyName: "connectedList", publicName: "connectedList", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, selectBy: { classPropertyName: "selectBy", publicName: "selectBy", isSignal: true, isRequired: false, transformFunction: null }, selectedKeys: { classPropertyName: "selectedKeys", publicName: "selectedKeys", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, singleSelectionToggleable: { classPropertyName: "singleSelectionToggleable", publicName: "singleSelectionToggleable", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, textField: { classPropertyName: "textField", publicName: "textField", isSignal: true, isRequired: false, transformFunction: null }, toolbar: { classPropertyName: "toolbar", publicName: "toolbar", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actionClick: "actionClick", selectedKeysChange: "selectedKeysChange", selectionChange: "selectionChange" }, host: { properties: { "class": "baseClasses()", "style.height": "listHeight()", "style.width": "listWidth()" } }, providers: [ListService], queries: [{ propertyName: "footerTemplate", first: true, predicate: ListBoxFooterTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "headerTemplate", first: true, predicate: ListBoxHeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "itemTemplate", first: true, predicate: ListBoxItemTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "noDataTemplate", first: true, predicate: ListBoxNoDataTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<mona-list-view\r\n [ariaLabel]=\"ariaLabel()\"\r\n [items]=\"listBoxItems()\"\r\n [height]=\"'100%'\"\r\n [rounded]=\"rounded()\"\r\n [size]=\"size()\"\r\n [textField]=\"textField()\"\r\n [width]=\"'100%'\"\r\n [monaListViewNavigable]=\"{ enabled: true, mode: 'select' }\"\r\n [monaListViewSelectable]=\"selectableOptions()\"\r\n [selectBy]=\"selectBy()\"\r\n [selectedKeys]=\"selectedKeys()\"\r\n (selectedKeysChange)=\"onSelectedKeysChange($event)\">\r\n @if (footerTemplate()) {\r\n <ng-template monaListViewFooterTemplate>\r\n <ng-container [ngTemplateOutlet]=\"footerTemplate()\"></ng-container>\r\n </ng-template>\r\n }\r\n @if (headerTemplate()) {\r\n <ng-template monaListViewHeaderTemplate>\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate()\"></ng-container>\r\n </ng-template>\r\n }\r\n @if (itemTemplate()) {\r\n <ng-template monaListViewItemTemplate let-dataItem>\r\n <ng-container\r\n [ngTemplateOutlet]=\"itemTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: dataItem }\"></ng-container>\r\n </ng-template>\r\n }\r\n @if (noDataTemplate()) {\r\n <ng-template monaListViewNoDataTemplate>\r\n <ng-container [ngTemplateOutlet]=\"noDataTemplate()\"></ng-container>\r\n </ng-template>\r\n }\r\n</mona-list-view>\r\n\r\n@let options = toolbarOptions() ?? null;\r\n@let connectedListBox = connectedList();\r\n@let hasSelectedItems = selectedItems().length > 0;\r\n@let connectedListHasSelectedItems = connectedListBox && connectedListBox.selectedItems().length > 0;\r\n@let connectedListItems = connectedListBox?.listBoxItems() ?? [];\r\n@if (options !== null && connectedListBox !== null) {\r\n <div [class]=\"toolbarClasses()\">\r\n @if (options.actions | monaContains: \"moveUp\") {\r\n <button\r\n monaButton\r\n (click)=\"onMoveClick('moveUp', $event)\"\r\n [iconOnly]=\"true\"\r\n [rounded]=\"rounded()\"\r\n [size]=\"size()\"\r\n title=\"Move Up\"\r\n aria-label=\"Move Up\"\r\n [disabled]=\"!hasSelectedItems && !connectedListHasSelectedItems\">\r\n <svg lucideChevronUp [size]=\"16\"></svg>\r\n </button>\r\n }\r\n @if (options.actions | monaContains: \"moveDown\") {\r\n <button\r\n monaButton\r\n (click)=\"onMoveClick('moveDown', $event)\"\r\n [iconOnly]=\"true\"\r\n [rounded]=\"rounded()\"\r\n [size]=\"size()\"\r\n title=\"Move Down\"\r\n aria-label=\"Move Down\"\r\n [disabled]=\"!hasSelectedItems && !connectedListHasSelectedItems\">\r\n <svg lucideChevronDown [size]=\"16\"></svg>\r\n </button>\r\n }\r\n @if (options.actions | monaContains: \"transferFrom\") {\r\n <button\r\n monaButton\r\n (click)=\"onTransferClick('transferFrom', $event)\"\r\n [iconOnly]=\"true\"\r\n [rounded]=\"rounded()\"\r\n [size]=\"size()\"\r\n title=\"Transfer From\"\r\n aria-label=\"Transfer From\"\r\n [disabled]=\"!connectedListHasSelectedItems\">\r\n <svg lucideChevronLeft [size]=\"16\"></svg>\r\n </button>\r\n }\r\n @if (options.actions | monaContains: \"transferTo\") {\r\n <button\r\n monaButton\r\n (click)=\"onTransferClick('transferTo', $event)\"\r\n [iconOnly]=\"true\"\r\n [rounded]=\"rounded()\"\r\n [size]=\"size()\"\r\n title=\"Transfer To\"\r\n aria-label=\"Transfer To\"\r\n [disabled]=\"!hasSelectedItems\">\r\n <svg lucideChevronRight [size]=\"16\"></svg>\r\n </button>\r\n }\r\n @if (options.actions | monaContains: \"transferAllFrom\") {\r\n <button\r\n monaButton\r\n (click)=\"onTransferClick('transferAllFrom', $event)\"\r\n [iconOnly]=\"true\"\r\n [rounded]=\"rounded()\"\r\n [size]=\"size()\"\r\n title=\"Transfer All From\"\r\n aria-label=\"Transfer All From\"\r\n [disabled]=\"!connectedListBox || connectedListItems.length === 0\">\r\n <svg lucideChevronsLeft [size]=\"16\"></svg>\r\n </button>\r\n }\r\n @if (options.actions | monaContains: \"transferAllTo\") {\r\n <button\r\n monaButton\r\n (click)=\"onTransferClick('transferAllTo', $event)\"\r\n [iconOnly]=\"true\"\r\n [rounded]=\"rounded()\"\r\n [size]=\"size()\"\r\n title=\"Transfer All To\"\r\n aria-label=\"Transfer All To\"\r\n [disabled]=\"listBoxItems().length === 0\">\r\n <svg lucideChevronsRight [size]=\"16\"></svg>\r\n </button>\r\n }\r\n @if (options.actions | monaContains: \"clear\") {\r\n <button\r\n monaButton\r\n (click)=\"onClearClick($event)\"\r\n [iconOnly]=\"true\"\r\n [rounded]=\"rounded()\"\r\n [size]=\"size()\"\r\n title=\"Clear Selection\"\r\n aria-label=\"Clear Selection\"\r\n [disabled]=\"!hasSelectedItems && !connectedListHasSelectedItems\">\r\n <svg lucideX [size]=\"16\"></svg>\r\n </button>\r\n }\r\n @if (options.actions | monaContains: \"remove\") {\r\n <button\r\n monaButton\r\n (click)=\"onRemoveClick($event)\"\r\n [iconOnly]=\"true\"\r\n [rounded]=\"rounded()\"\r\n [size]=\"size()\"\r\n title=\"Remove\"\r\n aria-label=\"Remove\"\r\n [disabled]=\"!hasSelectedItems && !connectedListHasSelectedItems\">\r\n <svg lucideTrash2 [size]=\"14\"></svg>\r\n </button>\r\n }\r\n </div>\r\n}\r\n", dependencies: [{ kind: "component", type: ListViewComponent, selector: "mona-list-view", inputs: ["aria-label", "height", "listClass", "listItemClass", "listItemStyle", "listStyle", "items", "maxHeight", "maxWidth", "rounded", "size", "textField", "class", "width"], outputs: ["scrollBottom"] }, { kind: "directive", type: ListViewSelectableDirective, selector: "mona-list-view[monaListViewSelectable]", inputs: ["monaListViewSelectable", "selectBy", "selectedKeys"], outputs: ["selectedKeysChange"] }, { kind: "directive", type: ListViewItemTemplateDirective, selector: "ng-template[monaListViewItemTemplate]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ButtonDirective, selector: "button[monaButton]", inputs: ["aria-haspopup", "disabled", "iconOnly", "loading", "look", "rounded", "selected", "size", "tabindex", "toggleable", "class"], outputs: ["disabledChange", "loadingChange", "lookChange", "selectedChange"] }, { kind: "directive", type: ListViewNavigableDirective, selector: "mona-list-view[monaListViewNavigable]", inputs: ["monaListViewNavigable"] }, { kind: "directive", type: ListViewNoDataTemplateDirective, selector: "ng-template[monaListViewNoDataTemplate]" }, { kind: "directive", type: ListViewFooterTemplateDirective, selector: "ng-template[monaListViewFooterTemplate]" }, { kind: "directive", type: ListViewHeaderTemplateDirective, selector: "ng-template[monaListViewHeaderTemplate]" }, { kind: "component", type: LucideChevronUp, selector: "svg[lucideChevronUp]" }, { kind: "component", type: LucideChevronDown, selector: "svg[lucideChevronDown]" }, { kind: "component", type: LucideChevronLeft, selector: "svg[lucideChevronLeft]" }, { kind: "component", type: LucideChevronRight, selector: "svg[lucideChevronRight]" }, { kind: "component", type: LucideChevronsLeft, selector: "svg[lucideChevronsLeft]" }, { kind: "component", type: LucideChevronsRight, selector: "svg[lucideChevronsRight]" }, { kind: "component", type: LucideX, selector: "svg[lucideX]" }, { kind: "component", type: LucideTrash2, selector: "svg[lucideTrash2]" }, { kind: "pipe", type: ContainsPipe, name: "monaContains" }] }); }
|
|
569
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: ListBoxComponent, isStandalone: true, selector: "mona-list-box", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, connectedList: { classPropertyName: "connectedList", publicName: "connectedList", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, selectBy: { classPropertyName: "selectBy", publicName: "selectBy", isSignal: true, isRequired: false, transformFunction: null }, selectedKeys: { classPropertyName: "selectedKeys", publicName: "selectedKeys", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, singleSelectionToggleable: { classPropertyName: "singleSelectionToggleable", publicName: "singleSelectionToggleable", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, textField: { classPropertyName: "textField", publicName: "textField", isSignal: true, isRequired: false, transformFunction: null }, toolbar: { classPropertyName: "toolbar", publicName: "toolbar", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actionClick: "actionClick", selectedKeysChange: "selectedKeysChange", selectionChange: "selectionChange" }, host: { properties: { "class": "baseClasses()", "style.height": "listHeight()", "style.width": "listWidth()" } }, providers: [ListService], queries: [{ propertyName: "footerTemplate", first: true, predicate: ListBoxFooterTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "headerTemplate", first: true, predicate: ListBoxHeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "itemTemplate", first: true, predicate: ListBoxItemTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "noDataTemplate", first: true, predicate: ListBoxNoDataTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<mona-list-view\n [ariaLabel]=\"ariaLabel()\"\n [items]=\"listBoxItems()\"\n [height]=\"'100%'\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n [textField]=\"textField()\"\n [width]=\"'100%'\"\n [monaListViewNavigable]=\"{ enabled: true, mode: 'select' }\"\n [monaListViewSelectable]=\"selectableOptions()\"\n [selectBy]=\"selectBy()\"\n [selectedKeys]=\"selectedKeys()\"\n (selectedKeysChange)=\"onSelectedKeysChange($event)\">\n @if (footerTemplate()) {\n <ng-template monaListViewFooterTemplate>\n <ng-container [ngTemplateOutlet]=\"footerTemplate()\"></ng-container>\n </ng-template>\n }\n @if (headerTemplate()) {\n <ng-template monaListViewHeaderTemplate>\n <ng-container [ngTemplateOutlet]=\"headerTemplate()\"></ng-container>\n </ng-template>\n }\n @if (itemTemplate()) {\n <ng-template monaListViewItemTemplate let-dataItem>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: dataItem }\"></ng-container>\n </ng-template>\n }\n @if (noDataTemplate()) {\n <ng-template monaListViewNoDataTemplate>\n <ng-container [ngTemplateOutlet]=\"noDataTemplate()\"></ng-container>\n </ng-template>\n }\n</mona-list-view>\n\n@let options = toolbarOptions() ?? null;\n@let connectedListBox = connectedList();\n@let hasSelectedItems = selectedItems().length > 0;\n@let connectedListHasSelectedItems = connectedListBox && connectedListBox.selectedItems().length > 0;\n@let connectedListItems = connectedListBox?.listBoxItems() ?? [];\n@if (options !== null && connectedListBox !== null) {\n <div [class]=\"toolbarClasses()\">\n @if (options.actions | monaContains: \"moveUp\") {\n <button\n monaButton\n (click)=\"onMoveClick('moveUp', $event)\"\n [iconOnly]=\"true\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n title=\"Move Up\"\n aria-label=\"Move Up\"\n [disabled]=\"!hasSelectedItems && !connectedListHasSelectedItems\">\n <svg lucideChevronUp [size]=\"16\"></svg>\n </button>\n }\n @if (options.actions | monaContains: \"moveDown\") {\n <button\n monaButton\n (click)=\"onMoveClick('moveDown', $event)\"\n [iconOnly]=\"true\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n title=\"Move Down\"\n aria-label=\"Move Down\"\n [disabled]=\"!hasSelectedItems && !connectedListHasSelectedItems\">\n <svg lucideChevronDown [size]=\"16\"></svg>\n </button>\n }\n @if (options.actions | monaContains: \"transferFrom\") {\n <button\n monaButton\n (click)=\"onTransferClick('transferFrom', $event)\"\n [iconOnly]=\"true\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n title=\"Transfer From\"\n aria-label=\"Transfer From\"\n [disabled]=\"!connectedListHasSelectedItems\">\n <svg lucideChevronLeft [size]=\"16\"></svg>\n </button>\n }\n @if (options.actions | monaContains: \"transferTo\") {\n <button\n monaButton\n (click)=\"onTransferClick('transferTo', $event)\"\n [iconOnly]=\"true\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n title=\"Transfer To\"\n aria-label=\"Transfer To\"\n [disabled]=\"!hasSelectedItems\">\n <svg lucideChevronRight [size]=\"16\"></svg>\n </button>\n }\n @if (options.actions | monaContains: \"transferAllFrom\") {\n <button\n monaButton\n (click)=\"onTransferClick('transferAllFrom', $event)\"\n [iconOnly]=\"true\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n title=\"Transfer All From\"\n aria-label=\"Transfer All From\"\n [disabled]=\"!connectedListBox || connectedListItems.length === 0\">\n <svg lucideChevronsLeft [size]=\"16\"></svg>\n </button>\n }\n @if (options.actions | monaContains: \"transferAllTo\") {\n <button\n monaButton\n (click)=\"onTransferClick('transferAllTo', $event)\"\n [iconOnly]=\"true\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n title=\"Transfer All To\"\n aria-label=\"Transfer All To\"\n [disabled]=\"listBoxItems().length === 0\">\n <svg lucideChevronsRight [size]=\"16\"></svg>\n </button>\n }\n @if (options.actions | monaContains: \"clear\") {\n <button\n monaButton\n (click)=\"onClearClick($event)\"\n [iconOnly]=\"true\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n title=\"Clear Selection\"\n aria-label=\"Clear Selection\"\n [disabled]=\"!hasSelectedItems && !connectedListHasSelectedItems\">\n <svg lucideX [size]=\"16\"></svg>\n </button>\n }\n @if (options.actions | monaContains: \"remove\") {\n <button\n monaButton\n (click)=\"onRemoveClick($event)\"\n [iconOnly]=\"true\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n title=\"Remove\"\n aria-label=\"Remove\"\n [disabled]=\"!hasSelectedItems && !connectedListHasSelectedItems\">\n <svg lucideTrash2 [size]=\"14\"></svg>\n </button>\n }\n </div>\n}\n", dependencies: [{ kind: "component", type: ListViewComponent, selector: "mona-list-view", inputs: ["aria-label", "height", "listClass", "listItemClass", "listItemStyle", "listStyle", "items", "maxHeight", "maxWidth", "rounded", "size", "textField", "class", "width"], outputs: ["scrollBottom"] }, { kind: "directive", type: ListViewSelectableDirective, selector: "mona-list-view[monaListViewSelectable]", inputs: ["monaListViewSelectable", "selectBy", "selectedKeys"], outputs: ["selectedKeysChange"] }, { kind: "directive", type: ListViewItemTemplateDirective, selector: "ng-template[monaListViewItemTemplate]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ButtonDirective, selector: "button[monaButton]", inputs: ["aria-haspopup", "disabled", "iconOnly", "loading", "look", "rounded", "selected", "size", "tabindex", "toggleable", "class"], outputs: ["disabledChange", "loadingChange", "lookChange", "selectedChange"] }, { kind: "directive", type: ListViewNavigableDirective, selector: "mona-list-view[monaListViewNavigable]", inputs: ["monaListViewNavigable"] }, { kind: "directive", type: ListViewNoDataTemplateDirective, selector: "ng-template[monaListViewNoDataTemplate]" }, { kind: "directive", type: ListViewFooterTemplateDirective, selector: "ng-template[monaListViewFooterTemplate]" }, { kind: "directive", type: ListViewHeaderTemplateDirective, selector: "ng-template[monaListViewHeaderTemplate]" }, { kind: "component", type: LucideChevronUp, selector: "svg[lucideChevronUp]" }, { kind: "component", type: LucideChevronDown, selector: "svg[lucideChevronDown]" }, { kind: "component", type: LucideChevronLeft, selector: "svg[lucideChevronLeft]" }, { kind: "component", type: LucideChevronRight, selector: "svg[lucideChevronRight]" }, { kind: "component", type: LucideChevronsLeft, selector: "svg[lucideChevronsLeft]" }, { kind: "component", type: LucideChevronsRight, selector: "svg[lucideChevronsRight]" }, { kind: "component", type: LucideX, selector: "svg[lucideX]" }, { kind: "component", type: LucideTrash2, selector: "svg[lucideTrash2]" }, { kind: "pipe", type: ContainsPipe, name: "monaContains" }] }); }
|
|
592
570
|
}
|
|
593
571
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ListBoxComponent, decorators: [{
|
|
594
572
|
type: Component,
|
|
@@ -615,7 +593,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
615
593
|
"[class]": "baseClasses()",
|
|
616
594
|
"[style.height]": "listHeight()",
|
|
617
595
|
"[style.width]": "listWidth()"
|
|
618
|
-
}, template: "<mona-list-view\
|
|
596
|
+
}, template: "<mona-list-view\n [ariaLabel]=\"ariaLabel()\"\n [items]=\"listBoxItems()\"\n [height]=\"'100%'\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n [textField]=\"textField()\"\n [width]=\"'100%'\"\n [monaListViewNavigable]=\"{ enabled: true, mode: 'select' }\"\n [monaListViewSelectable]=\"selectableOptions()\"\n [selectBy]=\"selectBy()\"\n [selectedKeys]=\"selectedKeys()\"\n (selectedKeysChange)=\"onSelectedKeysChange($event)\">\n @if (footerTemplate()) {\n <ng-template monaListViewFooterTemplate>\n <ng-container [ngTemplateOutlet]=\"footerTemplate()\"></ng-container>\n </ng-template>\n }\n @if (headerTemplate()) {\n <ng-template monaListViewHeaderTemplate>\n <ng-container [ngTemplateOutlet]=\"headerTemplate()\"></ng-container>\n </ng-template>\n }\n @if (itemTemplate()) {\n <ng-template monaListViewItemTemplate let-dataItem>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: dataItem }\"></ng-container>\n </ng-template>\n }\n @if (noDataTemplate()) {\n <ng-template monaListViewNoDataTemplate>\n <ng-container [ngTemplateOutlet]=\"noDataTemplate()\"></ng-container>\n </ng-template>\n }\n</mona-list-view>\n\n@let options = toolbarOptions() ?? null;\n@let connectedListBox = connectedList();\n@let hasSelectedItems = selectedItems().length > 0;\n@let connectedListHasSelectedItems = connectedListBox && connectedListBox.selectedItems().length > 0;\n@let connectedListItems = connectedListBox?.listBoxItems() ?? [];\n@if (options !== null && connectedListBox !== null) {\n <div [class]=\"toolbarClasses()\">\n @if (options.actions | monaContains: \"moveUp\") {\n <button\n monaButton\n (click)=\"onMoveClick('moveUp', $event)\"\n [iconOnly]=\"true\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n title=\"Move Up\"\n aria-label=\"Move Up\"\n [disabled]=\"!hasSelectedItems && !connectedListHasSelectedItems\">\n <svg lucideChevronUp [size]=\"16\"></svg>\n </button>\n }\n @if (options.actions | monaContains: \"moveDown\") {\n <button\n monaButton\n (click)=\"onMoveClick('moveDown', $event)\"\n [iconOnly]=\"true\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n title=\"Move Down\"\n aria-label=\"Move Down\"\n [disabled]=\"!hasSelectedItems && !connectedListHasSelectedItems\">\n <svg lucideChevronDown [size]=\"16\"></svg>\n </button>\n }\n @if (options.actions | monaContains: \"transferFrom\") {\n <button\n monaButton\n (click)=\"onTransferClick('transferFrom', $event)\"\n [iconOnly]=\"true\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n title=\"Transfer From\"\n aria-label=\"Transfer From\"\n [disabled]=\"!connectedListHasSelectedItems\">\n <svg lucideChevronLeft [size]=\"16\"></svg>\n </button>\n }\n @if (options.actions | monaContains: \"transferTo\") {\n <button\n monaButton\n (click)=\"onTransferClick('transferTo', $event)\"\n [iconOnly]=\"true\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n title=\"Transfer To\"\n aria-label=\"Transfer To\"\n [disabled]=\"!hasSelectedItems\">\n <svg lucideChevronRight [size]=\"16\"></svg>\n </button>\n }\n @if (options.actions | monaContains: \"transferAllFrom\") {\n <button\n monaButton\n (click)=\"onTransferClick('transferAllFrom', $event)\"\n [iconOnly]=\"true\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n title=\"Transfer All From\"\n aria-label=\"Transfer All From\"\n [disabled]=\"!connectedListBox || connectedListItems.length === 0\">\n <svg lucideChevronsLeft [size]=\"16\"></svg>\n </button>\n }\n @if (options.actions | monaContains: \"transferAllTo\") {\n <button\n monaButton\n (click)=\"onTransferClick('transferAllTo', $event)\"\n [iconOnly]=\"true\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n title=\"Transfer All To\"\n aria-label=\"Transfer All To\"\n [disabled]=\"listBoxItems().length === 0\">\n <svg lucideChevronsRight [size]=\"16\"></svg>\n </button>\n }\n @if (options.actions | monaContains: \"clear\") {\n <button\n monaButton\n (click)=\"onClearClick($event)\"\n [iconOnly]=\"true\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n title=\"Clear Selection\"\n aria-label=\"Clear Selection\"\n [disabled]=\"!hasSelectedItems && !connectedListHasSelectedItems\">\n <svg lucideX [size]=\"16\"></svg>\n </button>\n }\n @if (options.actions | monaContains: \"remove\") {\n <button\n monaButton\n (click)=\"onRemoveClick($event)\"\n [iconOnly]=\"true\"\n [rounded]=\"rounded()\"\n [size]=\"size()\"\n title=\"Remove\"\n aria-label=\"Remove\"\n [disabled]=\"!hasSelectedItems && !connectedListHasSelectedItems\">\n <svg lucideTrash2 [size]=\"14\"></svg>\n </button>\n }\n </div>\n}\n" }]
|
|
619
597
|
}], ctorParameters: () => [], propDecorators: { footerTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ListBoxFooterTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], headerTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ListBoxHeaderTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], itemTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ListBoxItemTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], noDataTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ListBoxNoDataTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], actionClick: [{ type: i0.Output, args: ["actionClick"] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], connectedList: [{ type: i0.Input, args: [{ isSignal: true, alias: "connectedList", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], selectBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectBy", required: false }] }], selectedKeys: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedKeys", required: false }] }], selectedKeysChange: [{ type: i0.Output, args: ["selectedKeysChange"] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], singleSelectionToggleable: [{ type: i0.Input, args: [{ isSignal: true, alias: "singleSelectionToggleable", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], textField: [{ type: i0.Input, args: [{ isSignal: true, alias: "textField", required: false }] }], toolbar: [{ type: i0.Input, args: [{ isSignal: true, alias: "toolbar", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }] } });
|
|
620
598
|
|
|
621
599
|
/*
|
|
@@ -4,7 +4,6 @@ import { Directive, inject, DestroyRef, ElementRef, computed, contentChild, Temp
|
|
|
4
4
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
5
|
import { ListService, ListComponent, ListHeaderTemplateDirective, ListFooterTemplateDirective, ListGroupHeaderTemplateDirective, ListItemTemplateDirective, ListNoDataTemplateDirective } from '@nanahoshi/mona-ui/internal/list';
|
|
6
6
|
import { PagerComponent } from '@nanahoshi/mona-ui/pager';
|
|
7
|
-
import { ThemeService } from '@nanahoshi/mona-ui/theme';
|
|
8
7
|
import { ImmutableSet } from '@mirei/ts-collections';
|
|
9
8
|
import { fromEvent, filter } from 'rxjs';
|
|
10
9
|
import { twMerge } from 'tailwind-merge';
|
|
@@ -65,11 +64,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
65
64
|
}]
|
|
66
65
|
}] });
|
|
67
66
|
|
|
68
|
-
const
|
|
69
|
-
flex flex-col
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
const listViewBaseThemeVariants = cva(`
|
|
68
|
+
flex h-full flex-col overflow-hidden
|
|
69
|
+
bg-surface text-foreground
|
|
70
|
+
border border-border
|
|
71
|
+
outline-none
|
|
73
72
|
`, {
|
|
74
73
|
variants: {
|
|
75
74
|
rounded: {
|
|
@@ -86,20 +85,10 @@ const listViewBaseVariants = cva(`
|
|
|
86
85
|
}
|
|
87
86
|
});
|
|
88
87
|
|
|
89
|
-
const listViewBaseThemeVariants = (theme) => {
|
|
90
|
-
switch (theme) {
|
|
91
|
-
case "mona":
|
|
92
|
-
return listViewBaseVariants;
|
|
93
|
-
default:
|
|
94
|
-
return listViewBaseVariants;
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
|
|
98
88
|
class ListViewComponent {
|
|
99
89
|
#destroyRef;
|
|
100
90
|
#hostElementRef;
|
|
101
91
|
#scrollBottomEnabled;
|
|
102
|
-
#themeService;
|
|
103
92
|
#scrollSubscription;
|
|
104
93
|
constructor() {
|
|
105
94
|
this.#destroyRef = inject(DestroyRef);
|
|
@@ -109,13 +98,11 @@ class ListViewComponent {
|
|
|
109
98
|
return !pageableOptions.enabled;
|
|
110
99
|
}, /* @ts-ignore */
|
|
111
100
|
...(ngDevMode ? [{ debugName: "#scrollBottomEnabled" }] : /* istanbul ignore next */ []));
|
|
112
|
-
this.#themeService = inject(ThemeService);
|
|
113
101
|
this.#scrollSubscription = null;
|
|
114
102
|
this.baseClasses = computed(() => {
|
|
115
|
-
const theme = this.#themeService.theme();
|
|
116
103
|
const rounded = this.rounded();
|
|
117
104
|
const size = this.size();
|
|
118
|
-
const variantClasses = listViewBaseThemeVariants(
|
|
105
|
+
const variantClasses = listViewBaseThemeVariants({ rounded, size });
|
|
119
106
|
const userClass = this.userClass();
|
|
120
107
|
return twMerge(variantClasses, userClass);
|
|
121
108
|
}, /* @ts-ignore */
|
|
@@ -287,7 +274,7 @@ class ListViewComponent {
|
|
|
287
274
|
},
|
|
288
275
|
deps: [[new Optional(), new SkipSelf(), ListService]]
|
|
289
276
|
}
|
|
290
|
-
], queries: [{ propertyName: "footerTemplate", first: true, predicate: ListViewFooterTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "groupHeaderTemplate", first: true, predicate: ListViewGroupHeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "headerTemplate", first: true, predicate: ListViewHeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "itemTemplate", first: true, predicate: ListViewItemTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "noDataTemplate", first: true, predicate: ListViewNoDataTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<mona-list\
|
|
277
|
+
], queries: [{ propertyName: "footerTemplate", first: true, predicate: ListViewFooterTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "groupHeaderTemplate", first: true, predicate: ListViewGroupHeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "headerTemplate", first: true, predicate: ListViewHeaderTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "itemTemplate", first: true, predicate: ListViewItemTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "noDataTemplate", first: true, predicate: ListViewNoDataTemplateDirective, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<mona-list\n [ariaLabel]=\"ariaLabel()\"\n [data]=\"viewItems()\"\n [height]=\"listHeight()\"\n [width]=\"listWidth()\"\n [maxHeight]=\"listMaxHeight()\"\n [maxWidth]=\"listMaxWidth()\"\n [listItemClass]=\"listItemClass()\"\n [listItemStyle]=\"listItemStyle()\"\n [listClass]=\"listClass()\"\n [listStyle]=\"listStyle()\">\n @if (footerTemplate()) {\n <ng-template monaListFooterTemplate>\n <ng-container [ngTemplateOutlet]=\"footerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (groupHeaderTemplate()) {\n <ng-template monaListGroupHeaderTemplate let-groupHeader>\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: groupHeader }\"></ng-container>\n </ng-template>\n }\n @if (headerTemplate()) {\n <ng-template monaListHeaderTemplate>\n <ng-container [ngTemplateOutlet]=\"headerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (itemTemplate()) {\n <ng-template monaListItemTemplate let-dataItem>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: dataItem }\"></ng-container>\n </ng-template>\n }\n @if (noDataTemplate()) {\n <ng-template monaListNoDataTemplate>\n <ng-container [ngTemplateOutlet]=\"noDataTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n</mona-list>\n\n@let pageableOptions = listService.pageableOptions();\n@if (pageableOptions.enabled && !listService.virtualScrollOptions().enabled && viewItems().length > 0) {\n @let pageState = listService.pageState();\n <div class=\"mona-list-view-pager\">\n <mona-pager\n [firstLast]=\"pageableOptions.firstLast\"\n [pageSizeValues]=\"pageableOptions.pageSizeValues\"\n [visiblePages]=\"pageableOptions.visiblePages\"\n [total]=\"itemCount()\"\n [skip]=\"pageState.skip\"\n [responsive]=\"false\"\n [rounded]=\"rounded()\"\n [pageSize]=\"pageState.take\"\n [previousNext]=\"pageableOptions.previousNext\"\n [showInfo]=\"pageableOptions.showInfo\"\n (pageChange)=\"onPageChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n class=\"border-b-0 border-l-0 border-r-0 rounded-t-none\"></mona-pager>\n </div>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PagerComponent, selector: "mona-pager", inputs: ["firstLast", "navigable", "pageInput", "pageSize", "pageSizeValues", "previousNext", "responsive", "rounded", "showInfo", "size", "skip", "total", "type", "class", "visiblePages"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: ListComponent, selector: "mona-list", inputs: ["ariaLabel", "data", "focusOnMount", "height", "listClass", "listId", "listItemClass", "listItemStyle", "listStyle", "maxHeight", "maxWidth", "size", "textField", "width"], outputs: ["itemSelect"] }, { kind: "directive", type: ListHeaderTemplateDirective, selector: "ng-template[monaListHeaderTemplate]" }, { kind: "directive", type: ListFooterTemplateDirective, selector: "ng-template[monaListFooterTemplate]" }, { kind: "directive", type: ListGroupHeaderTemplateDirective, selector: "ng-template[monaListGroupHeaderTemplate]" }, { kind: "directive", type: ListItemTemplateDirective, selector: "ng-template[monaListItemTemplate]" }, { kind: "directive", type: ListNoDataTemplateDirective, selector: "ng-template[monaListNoDataTemplate]" }] }); }
|
|
291
278
|
}
|
|
292
279
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ListViewComponent, decorators: [{
|
|
293
280
|
type: Component,
|
|
@@ -311,7 +298,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
311
298
|
], host: {
|
|
312
299
|
"[class]": "baseClasses()",
|
|
313
300
|
"[attr.tabindex]": "-1"
|
|
314
|
-
}, template: "<mona-list\
|
|
301
|
+
}, template: "<mona-list\n [ariaLabel]=\"ariaLabel()\"\n [data]=\"viewItems()\"\n [height]=\"listHeight()\"\n [width]=\"listWidth()\"\n [maxHeight]=\"listMaxHeight()\"\n [maxWidth]=\"listMaxWidth()\"\n [listItemClass]=\"listItemClass()\"\n [listItemStyle]=\"listItemStyle()\"\n [listClass]=\"listClass()\"\n [listStyle]=\"listStyle()\">\n @if (footerTemplate()) {\n <ng-template monaListFooterTemplate>\n <ng-container [ngTemplateOutlet]=\"footerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (groupHeaderTemplate()) {\n <ng-template monaListGroupHeaderTemplate let-groupHeader>\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: groupHeader }\"></ng-container>\n </ng-template>\n }\n @if (headerTemplate()) {\n <ng-template monaListHeaderTemplate>\n <ng-container [ngTemplateOutlet]=\"headerTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n @if (itemTemplate()) {\n <ng-template monaListItemTemplate let-dataItem>\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate() ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: dataItem }\"></ng-container>\n </ng-template>\n }\n @if (noDataTemplate()) {\n <ng-template monaListNoDataTemplate>\n <ng-container [ngTemplateOutlet]=\"noDataTemplate() ?? null\"></ng-container>\n </ng-template>\n }\n</mona-list>\n\n@let pageableOptions = listService.pageableOptions();\n@if (pageableOptions.enabled && !listService.virtualScrollOptions().enabled && viewItems().length > 0) {\n @let pageState = listService.pageState();\n <div class=\"mona-list-view-pager\">\n <mona-pager\n [firstLast]=\"pageableOptions.firstLast\"\n [pageSizeValues]=\"pageableOptions.pageSizeValues\"\n [visiblePages]=\"pageableOptions.visiblePages\"\n [total]=\"itemCount()\"\n [skip]=\"pageState.skip\"\n [responsive]=\"false\"\n [rounded]=\"rounded()\"\n [pageSize]=\"pageState.take\"\n [previousNext]=\"pageableOptions.previousNext\"\n [showInfo]=\"pageableOptions.showInfo\"\n (pageChange)=\"onPageChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n class=\"border-b-0 border-l-0 border-r-0 rounded-t-none\"></mona-pager>\n </div>\n}\n" }]
|
|
315
302
|
}], ctorParameters: () => [], propDecorators: { footerTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ListViewFooterTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], groupHeaderTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ListViewGroupHeaderTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], headerTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ListViewHeaderTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], itemTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ListViewItemTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], noDataTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ListViewNoDataTemplateDirective), { ...{ read: TemplateRef }, isSignal: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], listClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "listClass", required: false }] }], listItemClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "listItemClass", required: false }] }], listItemStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "listItemStyle", required: false }] }], listStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "listStyle", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], scrollBottom: [{ type: i0.Output, args: ["scrollBottom"] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], textField: [{ type: i0.Input, args: [{ isSignal: true, alias: "textField", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }] } });
|
|
316
303
|
|
|
317
304
|
class ListViewGroupableDirective {
|