@lavalogic/scoria 0.37.44 → 0.37.45
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/README.md +58 -58
- package/dist/Components/AccordionGroup.svelte +46 -46
- package/dist/Components/AccordionGroupButton.svelte +76 -76
- package/dist/Components/Action.svelte +136 -136
- package/dist/Components/ActionProps.d.ts +2 -6
- package/dist/Components/AlertModal.svelte +195 -183
- package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte +702 -702
- package/dist/Components/Base/BaseModal.svelte +125 -125
- package/dist/Components/Base/ContextWrapper.svelte +72 -72
- package/dist/Components/Base/Pagination.svelte +198 -198
- package/dist/Components/Base/Snippets.svelte +36 -36
- package/dist/Components/BigRadioSet.svelte +38 -38
- package/dist/Components/Bubble.svelte +101 -101
- package/dist/Components/Button.svelte +209 -209
- package/dist/Components/ButtonProps.d.ts +2 -6
- package/dist/Components/Checkbox.svelte +86 -86
- package/dist/Components/CollapsibleCard.svelte +78 -78
- package/dist/Components/Contexts/ContextMenu.svelte +164 -164
- package/dist/Components/Contexts/ContextMenuDivider.svelte +15 -15
- package/dist/Components/Contexts/ContextMenuOption.svelte +60 -60
- package/dist/Components/Contexts/Toast.svelte +83 -83
- package/dist/Components/Contexts/ToastContainer.svelte +65 -65
- package/dist/Components/Contexts/Tooltip.svelte +37 -37
- package/dist/Components/DataMatrixIcon.svelte +112 -112
- package/dist/Components/DataMatrixIconProps.d.ts +3 -13
- package/dist/Components/DateInput.svelte +148 -148
- package/dist/Components/DatePicker.svelte +300 -300
- package/dist/Components/DesktopModal.svelte +90 -90
- package/dist/Components/Dial.svelte +204 -204
- package/dist/Components/DialProps.d.ts +1 -18
- package/dist/Components/DimensionInput.svelte +170 -170
- package/dist/Components/DragMenu/DragMenuHolder.svelte +119 -119
- package/dist/Components/DragMenu/DraggableCard.svelte +77 -77
- package/dist/Components/FileCard.svelte +24 -24
- package/dist/Components/FileUpload.svelte +236 -236
- package/dist/Components/GridInput.svelte +196 -200
- package/dist/Components/GridInputSet.svelte +29 -29
- package/dist/Components/HorizontalTabGroup.svelte +82 -82
- package/dist/Components/HorizontalTabGroupButton.svelte +44 -44
- package/dist/Components/Icon.svelte +128 -128
- package/dist/Components/IconProps.d.ts +2 -7
- package/dist/Components/Icons.js +357 -357
- package/dist/Components/LoadingAnimation.svelte +29 -29
- package/dist/Components/LoadingModal.svelte +45 -45
- package/dist/Components/LoadingOverlay.svelte +25 -25
- package/dist/Components/LoadingOverlayProps.d.ts +3 -7
- package/dist/Components/Modal.svelte +258 -258
- package/dist/Components/ModalProps.d.ts +0 -3
- package/dist/Components/MultiSelect.svelte +220 -220
- package/dist/Components/MultiSelectCommonProps.d.ts +6 -17
- package/dist/Components/Nav/Nav.svelte +99 -99
- package/dist/Components/Nav/NavProps.d.ts +4 -11
- package/dist/Components/Nav/NavServiceMenuList.svelte +43 -43
- package/dist/Components/Nav/NavTab.svelte +62 -62
- package/dist/Components/Nav/ServiceMenuItem.svelte +100 -100
- package/dist/Components/Nav/ServicesNav.svelte +80 -80
- package/dist/Components/NumberInput.svelte +157 -157
- package/dist/Components/PageHeading.svelte +25 -25
- package/dist/Components/PasswordInput.svelte +88 -88
- package/dist/Components/Portal.svelte +36 -36
- package/dist/Components/ProgressBubble.svelte +107 -108
- package/dist/Components/ProgressBubbleProps.d.ts +3 -3
- package/dist/Components/QuerySelect.svelte +366 -366
- package/dist/Components/QuerySelectProps.d.ts +4 -14
- package/dist/Components/SingleSelect.svelte +250 -250
- package/dist/Components/SingleSelectCommonProps.d.ts +3 -19
- package/dist/Components/StepButton.svelte +70 -70
- package/dist/Components/StepForm.svelte +140 -140
- package/dist/Components/Switch.svelte +69 -69
- package/dist/Components/Table/ARCHITECTURE.md +298 -0
- package/dist/Components/Table/Body/QuickSearchCell.svelte +679 -694
- package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte +51 -51
- package/dist/Components/Table/Body/Rows/ColumnList.svelte +59 -59
- package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +456 -478
- package/dist/Components/Table/Body/Rows/Columns/AccessorComponent.svelte +79 -79
- package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +185 -188
- package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +124 -124
- package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +120 -120
- package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +230 -230
- package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +105 -105
- package/dist/Components/Table/Body/Rows/Columns/SelectColumn.d.ts +12 -9
- package/dist/Components/Table/Body/Rows/Columns/SelectTableCell.d.ts +5 -5
- package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +87 -87
- package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +126 -126
- package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +159 -159
- package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +246 -246
- package/dist/Components/Table/Body/Rows/Columns/TableDatePickerProps.d.ts +4 -4
- package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +216 -216
- package/dist/Components/Table/Body/Rows/Columns/TableQueryCell.d.ts +6 -5
- package/dist/Components/Table/Body/Rows/Columns/TableQueryColumn.d.ts +7 -6
- package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +252 -257
- package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +179 -179
- package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +221 -229
- package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte.d.ts +11 -11
- package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +197 -197
- package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +190 -190
- package/dist/Components/Table/Body/Rows/TableRow.svelte +290 -290
- package/dist/Components/Table/Body/TableBody.svelte +155 -155
- package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +2 -3
- package/dist/Components/Table/ColumnFactory.svelte.d.ts +9 -11
- package/dist/Components/Table/ColumnFactory.svelte.js +101 -118
- package/dist/Components/Table/ColumnKindRegistry.d.ts +112 -0
- package/dist/Components/Table/ColumnKindRegistry.js +63 -0
- package/dist/Components/Table/Headers/HighlightAllHeader.svelte +41 -41
- package/dist/Components/Table/Headers/SelectAllHeader.svelte +30 -30
- package/dist/Components/Table/Headers/TableHead.svelte +415 -413
- package/dist/Components/Table/Misc/ColumnPanel.svelte +94 -94
- package/dist/Components/Table/Misc/ColumnPanelModal.svelte +112 -112
- package/dist/Components/Table/Misc/FilterInput.svelte +620 -644
- package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +12 -12
- package/dist/Components/Table/Misc/FilterInputProps.d.ts +2 -2
- package/dist/Components/Table/Misc/FilterPanel.svelte +257 -257
- package/dist/Components/Table/Misc/FilterPanelModal.svelte +30 -30
- package/dist/Components/Table/Misc/SidePanel.svelte +35 -35
- package/dist/Components/Table/Misc/TableFooter.svelte +311 -311
- package/dist/Components/Table/Misc/TableHorizontalBar.svelte +125 -125
- package/dist/Components/Table/Misc/TableSidebar.svelte +157 -157
- package/dist/Components/Table/Misc/ToolboxPanel.svelte +100 -100
- package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +107 -107
- package/dist/Components/Table/NestedTable.svelte +130 -133
- package/dist/Components/Table/SubApis.svelte.d.ts +1 -5
- package/dist/Components/Table/SubApis.svelte.js +33 -32
- package/dist/Components/Table/Table.svelte +692 -745
- package/dist/Components/Table/TableHelpers.svelte.d.ts +6 -19
- package/dist/Components/Table/TableHelpers.svelte.js +6 -14
- package/dist/Components/Table/Types/Columns/Column.d.ts +2 -2
- package/dist/Components/Table/Types/Columns/DateColumn.d.ts +3 -3
- package/dist/Components/Table/Types/Columns/DateTableCell.d.ts +7 -7
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.d.ts +7 -8
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.js +4 -5
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.d.ts +11 -14
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.js +3 -4
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.d.ts +7 -11
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.js +3 -3
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.d.ts +13 -18
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.js +4 -5
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.js +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.d.ts +15 -12
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.js +4 -5
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.d.ts +8 -12
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.js +3 -3
- package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.d.ts +6 -6
- package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.js +3 -3
- package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.d.ts +49 -16
- package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.js +27 -5
- package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.d.ts +7 -7
- package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js +4 -4
- package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.js +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.js +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.js +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.js +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +11 -19
- package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.js +4 -8
- package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.d.ts +6 -7
- package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.js +3 -4
- package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.d.ts +9 -9
- package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js +4 -4
- package/dist/Components/Table/Types/Columns/ExpandTableCell.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/ProgressBarTableCell.d.ts +6 -6
- package/dist/Components/Table/Types/Columns/TableCell.d.ts +7 -6
- package/dist/Components/Table/Types/Context/ClipboardState.svelte.d.ts +98 -0
- package/dist/Components/Table/Types/Context/ClipboardState.svelte.js +290 -0
- package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.d.ts +17 -45
- package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.js +17 -45
- package/dist/Components/Table/Types/Context/FilteringState.svelte.d.ts +9 -20
- package/dist/Components/Table/Types/Context/FilteringState.svelte.js +9 -20
- package/dist/Components/Table/Types/Context/FocusState.svelte.d.ts +23 -42
- package/dist/Components/Table/Types/Context/FocusState.svelte.js +32 -59
- package/dist/Components/Table/Types/Context/ITable.d.ts +5 -8
- package/dist/Components/Table/Types/Context/PreferencesState.svelte.d.ts +29 -56
- package/dist/Components/Table/Types/Context/PreferencesState.svelte.js +28 -55
- package/dist/Components/Table/Types/Context/QueryValuesState.svelte.d.ts +50 -0
- package/dist/Components/Table/Types/Context/QueryValuesState.svelte.js +62 -0
- package/dist/Components/Table/Types/Context/SelectionState.svelte.d.ts +17 -28
- package/dist/Components/Table/Types/Context/SelectionState.svelte.js +17 -28
- package/dist/Components/Table/Types/Context/SortingState.svelte.d.ts +15 -29
- package/dist/Components/Table/Types/Context/SortingState.svelte.js +17 -31
- package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +212 -325
- package/dist/Components/Table/Types/Context/TableContext.svelte.js +292 -706
- package/dist/Components/Table/Types/Context/VirtualisationState.svelte.d.ts +62 -79
- package/dist/Components/Table/Types/Context/VirtualisationState.svelte.js +54 -73
- package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.d.ts +16 -27
- package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.js +16 -27
- package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +12 -15
- package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +15 -30
- package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +16 -28
- package/dist/Components/Table/Types/Header.d.ts +4 -4
- package/dist/Components/Table/Types/HeaderGroup.d.ts +5 -5
- package/dist/Components/Table/Types/Public/index.d.ts +2 -4
- package/dist/Components/Table/Types/Public/index.js +2 -4
- package/dist/Components/Table/clipboardEscape.d.ts +32 -0
- package/dist/Components/Table/clipboardEscape.js +45 -0
- package/dist/Components/Table/createTable.svelte.d.ts +8 -18
- package/dist/Components/Table/createTable.svelte.js +19 -47
- package/dist/Components/Test/TestContextConsumer.svelte +13 -13
- package/dist/Components/TextArea.svelte +130 -130
- package/dist/Components/TextInput.svelte +176 -176
- package/dist/Components/ThreeStateRadio.svelte +131 -131
- package/dist/Components/Touch/BoolCard.svelte +45 -45
- package/dist/Components/Touch/DateModal.svelte +209 -209
- package/dist/Components/Touch/EditCard.svelte +59 -59
- package/dist/Components/Touch/InfoCard.svelte +31 -31
- package/dist/Components/Touch/InfoTextCard.svelte +28 -28
- package/dist/Components/Touch/ModalExplanation.svelte +17 -17
- package/dist/Components/Touch/NumberKeyboard.svelte +225 -225
- package/dist/Components/Touch/NumberModal.svelte +79 -79
- package/dist/Components/Touch/PlusMinusCard.svelte +46 -46
- package/dist/Components/Touch/SelectModal.svelte +123 -123
- package/dist/Components/Touch/SummaryCard.svelte +93 -93
- package/dist/Components/Touch/TextAreaModal.svelte +95 -95
- package/dist/Components/Touch/TextModal.svelte +106 -106
- package/dist/Components/Touch/TouchCard.svelte +33 -33
- package/dist/Components/Touch/TouchModal.svelte +274 -274
- package/dist/Components/Touch/UtilityButton.svelte +109 -109
- package/dist/Components/VerticalTabGroup.svelte +79 -79
- package/dist/Components/VerticalTabGroupButton.svelte +58 -58
- package/dist/Contexts/ToastContext.svelte.js +3 -4
- package/dist/Helpers/Datamatrix.d.ts +19 -19
- package/dist/Helpers/Datamatrix.js +291 -291
- package/dist/Helpers/Helpers.svelte.d.ts +2 -4
- package/dist/Helpers/Helpers.svelte.js +2 -4
- package/dist/Helpers/dropdownPortal.d.ts +26 -41
- package/dist/Helpers/dropdownPortal.js +62 -116
- package/dist/Types/Examples/ExampleModal.svelte +35 -35
- package/dist/index.d.ts +0 -1
- package/dist/scss/_basics.scss +12 -12
- package/dist/scss/_colours.scss +134 -134
- package/dist/scss/_mixins.scss +3348 -3360
- package/dist/scss/_motion.scss +57 -57
- package/dist/scss/_sizing.scss +85 -85
- package/dist/scss/_transitions.scss +8 -8
- package/package.json +2 -1
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import type { Primitive } from '../Types/Context/TableInitOptions.js';
|
|
2
2
|
import type { FilterInputProps } from './FilterInputProps.js';
|
|
3
|
-
declare function $$render<T extends object, IdType extends Primitive, FilterValueType
|
|
4
|
-
props: FilterInputProps<T, FilterValueType
|
|
3
|
+
declare function $$render<T extends object, IdType extends Primitive, FilterValueType>(): {
|
|
4
|
+
props: FilterInputProps<T, FilterValueType>;
|
|
5
5
|
exports: {};
|
|
6
6
|
bindings: "";
|
|
7
7
|
slots: {};
|
|
8
8
|
events: {};
|
|
9
9
|
};
|
|
10
|
-
declare class __sveltets_Render<T extends object, IdType extends Primitive, FilterValueType
|
|
11
|
-
props(): ReturnType<typeof $$render<T, IdType, FilterValueType
|
|
12
|
-
events(): ReturnType<typeof $$render<T, IdType, FilterValueType
|
|
13
|
-
slots(): ReturnType<typeof $$render<T, IdType, FilterValueType
|
|
10
|
+
declare class __sveltets_Render<T extends object, IdType extends Primitive, FilterValueType> {
|
|
11
|
+
props(): ReturnType<typeof $$render<T, IdType, FilterValueType>>['props'];
|
|
12
|
+
events(): ReturnType<typeof $$render<T, IdType, FilterValueType>>['events'];
|
|
13
|
+
slots(): ReturnType<typeof $$render<T, IdType, FilterValueType>>['slots'];
|
|
14
14
|
bindings(): "";
|
|
15
15
|
exports(): {};
|
|
16
16
|
}
|
|
17
17
|
interface $$IsomorphicComponent {
|
|
18
|
-
new <T extends object, IdType extends Primitive, FilterValueType
|
|
19
|
-
$$bindings?: ReturnType<__sveltets_Render<T, IdType, FilterValueType
|
|
20
|
-
} & ReturnType<__sveltets_Render<T, IdType, FilterValueType
|
|
21
|
-
<T extends object, IdType extends Primitive, FilterValueType
|
|
22
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any, any, any
|
|
18
|
+
new <T extends object, IdType extends Primitive, FilterValueType>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, IdType, FilterValueType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, IdType, FilterValueType>['props']>, ReturnType<__sveltets_Render<T, IdType, FilterValueType>['events']>, ReturnType<__sveltets_Render<T, IdType, FilterValueType>['slots']>> & {
|
|
19
|
+
$$bindings?: ReturnType<__sveltets_Render<T, IdType, FilterValueType>['bindings']>;
|
|
20
|
+
} & ReturnType<__sveltets_Render<T, IdType, FilterValueType>['exports']>;
|
|
21
|
+
<T extends object, IdType extends Primitive, FilterValueType>(internal: unknown, props: ReturnType<__sveltets_Render<T, IdType, FilterValueType>['props']> & {}): ReturnType<__sveltets_Render<T, IdType, FilterValueType>['exports']>;
|
|
22
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
|
|
23
23
|
}
|
|
24
24
|
declare const FilterInput: $$IsomorphicComponent;
|
|
25
|
-
type FilterInput<T extends object, IdType extends Primitive, FilterValueType
|
|
25
|
+
type FilterInput<T extends object, IdType extends Primitive, FilterValueType> = InstanceType<typeof FilterInput<T, IdType, FilterValueType>>;
|
|
26
26
|
export default FilterInput;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ColumnDef } from '../Types/Columns/Definitions/ColumnDef.svelte.js';
|
|
2
2
|
import type { CustomRemoteFilters } from '../Types/Filtering/CustomRemoteFilters.js';
|
|
3
|
-
export interface FilterInputProps<T extends object, FilterValueType
|
|
4
|
-
def: ColumnDef<T, FilterValueType
|
|
3
|
+
export interface FilterInputProps<T extends object, FilterValueType> {
|
|
4
|
+
def: ColumnDef<T, FilterValueType>;
|
|
5
5
|
customFilters?: CustomRemoteFilters<FilterValueType> | undefined;
|
|
6
6
|
}
|
|
@@ -1,259 +1,259 @@
|
|
|
1
|
-
<svelte:options runes />
|
|
2
|
-
|
|
3
|
-
<script
|
|
4
|
-
lang="ts"
|
|
5
|
-
generics="T extends object, IdType extends Primitive"
|
|
6
|
-
>
|
|
7
|
-
import Action from '../../Action.svelte';
|
|
8
|
-
import Button from '../../Button.svelte';
|
|
9
|
-
import TextInput from '../../TextInput.svelte';
|
|
10
|
-
import { Colour, ColourSet } from '../../../scss/colours.js';
|
|
11
|
-
import { Size } from '../../../Types/Internal/Size.js';
|
|
12
|
-
import { Variant } from '../../../Types/Internal/Variant.js';
|
|
13
|
-
import { SvelteSet } from 'svelte/reactivity';
|
|
14
|
-
import { getContext } from 'svelte';
|
|
15
|
-
import type { Primitive } from '../Types/Context/TableInitOptions.js';
|
|
16
|
-
import type { ColumnDef } from '../Types/Columns/Definitions/ColumnDef.svelte.js';
|
|
17
|
-
import { TableContext } from '../Types/Context/TableContext.svelte.js';
|
|
18
|
-
import FilterInput from './FilterInput.svelte';
|
|
19
|
-
|
|
20
|
-
const tableContext = getContext<TableContext<T, IdType>>(TableContext.identifier);
|
|
21
|
-
|
|
22
|
-
/** Fallback group label used for any filterable column whose
|
|
23
|
-
* `filterGroup` is undefined. Picked up by the same grouping +
|
|
24
|
-
* collapse machinery as user-declared groups. */
|
|
25
|
-
const FALLBACK_GROUP = 'Other';
|
|
26
|
-
|
|
27
|
-
const defs = $derived(tableContext.columnDefs as Array<ColumnDef<T, unknown>>);
|
|
28
|
-
const filterableDefs = $derived(defs.filter((d) => d.allowFiltering));
|
|
29
|
-
|
|
30
|
-
/** User-typed substring filter for the column-header text. Empty
|
|
31
|
-
* string is the "no filter" state. */
|
|
32
|
-
let quickFindValue: string = $state('');
|
|
33
|
-
|
|
34
|
-
/** Whether the Save Filter overflow menu is open. The chevron
|
|
35
|
-
* toggles it; clicking anywhere else (via the window-level
|
|
36
|
-
* listener below) closes it. */
|
|
37
|
-
let saveMenuOpen: boolean = $state(false);
|
|
38
|
-
|
|
39
|
-
/** Names of currently-collapsed groups. A name absent from this
|
|
40
|
-
* set is rendered expanded. Reactive via `SvelteSet` so the panel
|
|
41
|
-
* re-renders on toggle without manually re-assigning. */
|
|
42
|
-
const collapsedGroups = new SvelteSet<string>();
|
|
43
|
-
|
|
44
|
-
/** Filters the column-def list against `quickFindValue`. The match
|
|
45
|
-
* is case-insensitive against the header text (for string
|
|
46
|
-
* headers) and the column id as a fallback for Snippet headers. */
|
|
47
|
-
const matchingDefs: Array<ColumnDef<T, unknown>> = $derived.by(() => {
|
|
48
|
-
const q = quickFindValue.trim().toLowerCase();
|
|
49
|
-
if (q.length === 0) {
|
|
50
|
-
return filterableDefs;
|
|
51
|
-
}
|
|
52
|
-
return filterableDefs.filter((d) => {
|
|
53
|
-
if (typeof d.header === 'string' && d.header.toLowerCase().includes(q)) {
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
return d.id.toLowerCase().includes(q);
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
/** Ordered list of group names. The first column-def each group
|
|
61
|
-
* is seen on determines its position so groups appear in the
|
|
62
|
-
* source-declaration order. The fallback "Other" group is
|
|
63
|
-
* appended last so explicitly-named groups always lead. */
|
|
64
|
-
const orderedGroupNames: Array<string> = $derived.by(() => {
|
|
65
|
-
const seen = new Set<string>();
|
|
66
|
-
const out: Array<string> = [];
|
|
67
|
-
let sawFallback = false;
|
|
68
|
-
for (const def of matchingDefs) {
|
|
69
|
-
const name = def.filterGroup ?? FALLBACK_GROUP;
|
|
70
|
-
if (name === FALLBACK_GROUP) {
|
|
71
|
-
sawFallback = true;
|
|
72
|
-
continue;
|
|
73
|
-
}
|
|
74
|
-
if (!seen.has(name)) {
|
|
75
|
-
seen.add(name);
|
|
76
|
-
out.push(name);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
if (sawFallback) {
|
|
80
|
-
out.push(FALLBACK_GROUP);
|
|
81
|
-
}
|
|
82
|
-
return out;
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
/** Group name -> column-defs in that group, preserving declaration
|
|
86
|
-
* order within the group. */
|
|
87
|
-
const groupedDefs: Map<string, Array<ColumnDef<T, unknown>>> = $derived.by(() => {
|
|
88
|
-
const map = new Map<string, Array<ColumnDef<T, unknown>>>();
|
|
89
|
-
for (const def of matchingDefs) {
|
|
90
|
-
const name = def.filterGroup ?? FALLBACK_GROUP;
|
|
91
|
-
let bucket = map.get(name);
|
|
92
|
-
if (!bucket) {
|
|
93
|
-
bucket = [];
|
|
94
|
-
map.set(name, bucket);
|
|
95
|
-
}
|
|
96
|
-
bucket.push(def);
|
|
97
|
-
}
|
|
98
|
-
return map;
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
function toggleGroup(name: string): void {
|
|
102
|
-
if (collapsedGroups.has(name)) {
|
|
103
|
-
collapsedGroups.delete(name);
|
|
104
|
-
} else {
|
|
105
|
-
collapsedGroups.add(name);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
function resetFilters(): void {
|
|
110
|
-
tableContext.paginationRepo?.resetFilters();
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Placeholder for the future Save-Filter / preset workflow. For
|
|
115
|
-
* now this just closes the overflow menu; consumers wire the real
|
|
116
|
-
* persistence layer in a follow-up workorder. The chevron menu is
|
|
117
|
-
* still useful today as a home for the Reset action and as the
|
|
118
|
-
* insertion point for "Load Filter" / "Manage Filters" entries
|
|
119
|
-
* once those land.
|
|
120
|
-
*/
|
|
121
|
-
function saveFilter(): void {
|
|
122
|
-
saveMenuOpen = false;
|
|
123
|
-
if (typeof window !== 'undefined') {
|
|
124
|
-
window.dispatchEvent(
|
|
125
|
-
new CustomEvent('scoria:save-filter', {
|
|
126
|
-
detail: { tableName: tableContext.tableName },
|
|
127
|
-
})
|
|
128
|
-
);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
function handleWindowClick(e: MouseEvent): void {
|
|
133
|
-
if (!saveMenuOpen) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
const target = e.target as HTMLElement | null;
|
|
137
|
-
if (target?.closest('.save-filter-cluster') == null) {
|
|
138
|
-
saveMenuOpen = false;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* No-op keydown handler used to override `TextInput`'s default
|
|
144
|
-
* `passthrough` keydown (defined in `Helpers.svelte.ts`), which
|
|
145
|
-
* blurs the focused input on every alphanumeric keypress so that
|
|
146
|
-
* barcode-scanner buffers can flow into `UntypedInputContext`
|
|
147
|
-
* instead. For a plain quick-find search field we want every key
|
|
148
|
-
* to land in the input rather than the input blurring after the
|
|
149
|
-
* first character. Returns immediately and lets the keystroke
|
|
150
|
-
* continue to bubble so the side-panel's window-level Escape
|
|
151
|
-
* handler still closes the panel.
|
|
152
|
-
*/
|
|
153
|
-
function noopKeydown(_e: KeyboardEvent): void {
|
|
154
|
-
// intentionally empty
|
|
155
|
-
}
|
|
156
|
-
</script>
|
|
157
|
-
|
|
158
|
-
<svelte:window onclick={handleWindowClick} />
|
|
159
|
-
|
|
160
|
-
<section class="side-panel-section">
|
|
161
|
-
<header class="side-panel-header">
|
|
162
|
-
<h2>Advanced Filter</h2>
|
|
163
|
-
</header>
|
|
164
|
-
|
|
165
|
-
<div class="toolbar">
|
|
166
|
-
<div class="quick-find">
|
|
167
|
-
<TextInput
|
|
168
|
-
labelTop="Quick Find a Filter"
|
|
169
|
-
placeholder="Filter…"
|
|
170
|
-
bind:value={quickFindValue}
|
|
171
|
-
rightIcon={{ name: 'search', size: Size.Medium }}
|
|
172
|
-
onkeydown={noopKeydown}
|
|
173
|
-
/>
|
|
174
|
-
</div>
|
|
175
|
-
|
|
176
|
-
<div class="save-filter-cluster">
|
|
177
|
-
<Button
|
|
178
|
-
variant={Variant.Secondary}
|
|
179
|
-
nowrap
|
|
180
|
-
disabled
|
|
181
|
-
size={Size.MediumSmall}
|
|
182
|
-
onclick={saveFilter}>Save Filter</Button
|
|
183
|
-
>
|
|
184
|
-
<Action
|
|
185
|
-
label="More save options"
|
|
186
|
-
colourSet={ColourSet.Auxiliary}
|
|
187
|
-
icon={{ name: 'chevron-down', size: Size.Medium }}
|
|
188
|
-
onclick={() => {
|
|
189
|
-
saveMenuOpen = !saveMenuOpen;
|
|
190
|
-
}}
|
|
191
|
-
/>
|
|
192
|
-
{#if saveMenuOpen}
|
|
193
|
-
<div class="save-menu">
|
|
194
|
-
<button
|
|
195
|
-
type="button"
|
|
196
|
-
class="save-menu-item"
|
|
197
|
-
onclick={() => {
|
|
198
|
-
saveMenuOpen = false;
|
|
199
|
-
resetFilters();
|
|
200
|
-
}}>Reset all filters</button
|
|
201
|
-
>
|
|
202
|
-
</div>
|
|
203
|
-
{/if}
|
|
204
|
-
</div>
|
|
205
|
-
</div>
|
|
206
|
-
|
|
207
|
-
<div class="side-panel-body">
|
|
208
|
-
{#if filterableDefs.length === 0}
|
|
209
|
-
<p class="empty">No filterable columns.</p>
|
|
210
|
-
{:else if matchingDefs.length === 0}
|
|
211
|
-
<p class="empty">
|
|
212
|
-
No filters match “{quickFindValue}”.
|
|
213
|
-
</p>
|
|
214
|
-
{:else}
|
|
215
|
-
<div class="groups">
|
|
216
|
-
{#each orderedGroupNames as groupName (groupName)}
|
|
217
|
-
{@const defsInGroup = groupedDefs.get(groupName) ?? []}
|
|
218
|
-
{@const isCollapsed = collapsedGroups.has(groupName)}
|
|
219
|
-
{#if defsInGroup.length > 0}
|
|
220
|
-
<section
|
|
221
|
-
class="group"
|
|
222
|
-
class:collapsed={isCollapsed}
|
|
223
|
-
>
|
|
224
|
-
<header class="group-header">
|
|
225
|
-
<h3>{groupName}</h3>
|
|
226
|
-
<Action
|
|
227
|
-
label={isCollapsed ? `Expand ${groupName}` : `Collapse ${groupName}`}
|
|
228
|
-
colourSet={ColourSet.Auxiliary}
|
|
229
|
-
icon={{
|
|
230
|
-
name: isCollapsed ? 'circle-plus' : 'circle-minus',
|
|
231
|
-
size: Size.Medium,
|
|
232
|
-
colour: Colour['$ui-blue-9'],
|
|
233
|
-
}}
|
|
234
|
-
onclick={() => {
|
|
235
|
-
toggleGroup(groupName);
|
|
236
|
-
}}
|
|
237
|
-
/>
|
|
238
|
-
</header>
|
|
239
|
-
{#if !isCollapsed}
|
|
240
|
-
<div class="group-body">
|
|
241
|
-
{#each defsInGroup as def (def.id)}
|
|
242
|
-
<FilterInput
|
|
243
|
-
{def}
|
|
244
|
-
customFilters={tableContext.remoteFilters}
|
|
245
|
-
/>
|
|
246
|
-
{/each}
|
|
247
|
-
</div>
|
|
248
|
-
{/if}
|
|
249
|
-
</section>
|
|
250
|
-
{/if}
|
|
251
|
-
{/each}
|
|
252
|
-
</div>
|
|
253
|
-
{/if}
|
|
254
|
-
</div>
|
|
255
|
-
</section>
|
|
256
|
-
|
|
1
|
+
<svelte:options runes />
|
|
2
|
+
|
|
3
|
+
<script
|
|
4
|
+
lang="ts"
|
|
5
|
+
generics="T extends object, IdType extends Primitive"
|
|
6
|
+
>
|
|
7
|
+
import Action from '../../Action.svelte';
|
|
8
|
+
import Button from '../../Button.svelte';
|
|
9
|
+
import TextInput from '../../TextInput.svelte';
|
|
10
|
+
import { Colour, ColourSet } from '../../../scss/colours.js';
|
|
11
|
+
import { Size } from '../../../Types/Internal/Size.js';
|
|
12
|
+
import { Variant } from '../../../Types/Internal/Variant.js';
|
|
13
|
+
import { SvelteSet } from 'svelte/reactivity';
|
|
14
|
+
import { getContext } from 'svelte';
|
|
15
|
+
import type { Primitive } from '../Types/Context/TableInitOptions.js';
|
|
16
|
+
import type { ColumnDef } from '../Types/Columns/Definitions/ColumnDef.svelte.js';
|
|
17
|
+
import { TableContext } from '../Types/Context/TableContext.svelte.js';
|
|
18
|
+
import FilterInput from './FilterInput.svelte';
|
|
19
|
+
|
|
20
|
+
const tableContext = getContext<TableContext<T, IdType>>(TableContext.identifier);
|
|
21
|
+
|
|
22
|
+
/** Fallback group label used for any filterable column whose
|
|
23
|
+
* `filterGroup` is undefined. Picked up by the same grouping +
|
|
24
|
+
* collapse machinery as user-declared groups. */
|
|
25
|
+
const FALLBACK_GROUP = 'Other';
|
|
26
|
+
|
|
27
|
+
const defs = $derived(tableContext.columnDefs as Array<ColumnDef<T, unknown>>);
|
|
28
|
+
const filterableDefs = $derived(defs.filter((d) => d.allowFiltering));
|
|
29
|
+
|
|
30
|
+
/** User-typed substring filter for the column-header text. Empty
|
|
31
|
+
* string is the "no filter" state. */
|
|
32
|
+
let quickFindValue: string = $state('');
|
|
33
|
+
|
|
34
|
+
/** Whether the Save Filter overflow menu is open. The chevron
|
|
35
|
+
* toggles it; clicking anywhere else (via the window-level
|
|
36
|
+
* listener below) closes it. */
|
|
37
|
+
let saveMenuOpen: boolean = $state(false);
|
|
38
|
+
|
|
39
|
+
/** Names of currently-collapsed groups. A name absent from this
|
|
40
|
+
* set is rendered expanded. Reactive via `SvelteSet` so the panel
|
|
41
|
+
* re-renders on toggle without manually re-assigning. */
|
|
42
|
+
const collapsedGroups = new SvelteSet<string>();
|
|
43
|
+
|
|
44
|
+
/** Filters the column-def list against `quickFindValue`. The match
|
|
45
|
+
* is case-insensitive against the header text (for string
|
|
46
|
+
* headers) and the column id as a fallback for Snippet headers. */
|
|
47
|
+
const matchingDefs: Array<ColumnDef<T, unknown>> = $derived.by(() => {
|
|
48
|
+
const q = quickFindValue.trim().toLowerCase();
|
|
49
|
+
if (q.length === 0) {
|
|
50
|
+
return filterableDefs;
|
|
51
|
+
}
|
|
52
|
+
return filterableDefs.filter((d) => {
|
|
53
|
+
if (typeof d.header === 'string' && d.header.toLowerCase().includes(q)) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
return d.id.toLowerCase().includes(q);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
/** Ordered list of group names. The first column-def each group
|
|
61
|
+
* is seen on determines its position so groups appear in the
|
|
62
|
+
* source-declaration order. The fallback "Other" group is
|
|
63
|
+
* appended last so explicitly-named groups always lead. */
|
|
64
|
+
const orderedGroupNames: Array<string> = $derived.by(() => {
|
|
65
|
+
const seen = new Set<string>();
|
|
66
|
+
const out: Array<string> = [];
|
|
67
|
+
let sawFallback = false;
|
|
68
|
+
for (const def of matchingDefs) {
|
|
69
|
+
const name = def.filterGroup ?? FALLBACK_GROUP;
|
|
70
|
+
if (name === FALLBACK_GROUP) {
|
|
71
|
+
sawFallback = true;
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (!seen.has(name)) {
|
|
75
|
+
seen.add(name);
|
|
76
|
+
out.push(name);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (sawFallback) {
|
|
80
|
+
out.push(FALLBACK_GROUP);
|
|
81
|
+
}
|
|
82
|
+
return out;
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
/** Group name -> column-defs in that group, preserving declaration
|
|
86
|
+
* order within the group. */
|
|
87
|
+
const groupedDefs: Map<string, Array<ColumnDef<T, unknown>>> = $derived.by(() => {
|
|
88
|
+
const map = new Map<string, Array<ColumnDef<T, unknown>>>();
|
|
89
|
+
for (const def of matchingDefs) {
|
|
90
|
+
const name = def.filterGroup ?? FALLBACK_GROUP;
|
|
91
|
+
let bucket = map.get(name);
|
|
92
|
+
if (!bucket) {
|
|
93
|
+
bucket = [];
|
|
94
|
+
map.set(name, bucket);
|
|
95
|
+
}
|
|
96
|
+
bucket.push(def);
|
|
97
|
+
}
|
|
98
|
+
return map;
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
function toggleGroup(name: string): void {
|
|
102
|
+
if (collapsedGroups.has(name)) {
|
|
103
|
+
collapsedGroups.delete(name);
|
|
104
|
+
} else {
|
|
105
|
+
collapsedGroups.add(name);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function resetFilters(): void {
|
|
110
|
+
tableContext.paginationRepo?.resetFilters();
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Placeholder for the future Save-Filter / preset workflow. For
|
|
115
|
+
* now this just closes the overflow menu; consumers wire the real
|
|
116
|
+
* persistence layer in a follow-up workorder. The chevron menu is
|
|
117
|
+
* still useful today as a home for the Reset action and as the
|
|
118
|
+
* insertion point for "Load Filter" / "Manage Filters" entries
|
|
119
|
+
* once those land.
|
|
120
|
+
*/
|
|
121
|
+
function saveFilter(): void {
|
|
122
|
+
saveMenuOpen = false;
|
|
123
|
+
if (typeof window !== 'undefined') {
|
|
124
|
+
window.dispatchEvent(
|
|
125
|
+
new CustomEvent('scoria:save-filter', {
|
|
126
|
+
detail: { tableName: tableContext.tableName },
|
|
127
|
+
})
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function handleWindowClick(e: MouseEvent): void {
|
|
133
|
+
if (!saveMenuOpen) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const target = e.target as HTMLElement | null;
|
|
137
|
+
if (target?.closest('.save-filter-cluster') == null) {
|
|
138
|
+
saveMenuOpen = false;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* No-op keydown handler used to override `TextInput`'s default
|
|
144
|
+
* `passthrough` keydown (defined in `Helpers.svelte.ts`), which
|
|
145
|
+
* blurs the focused input on every alphanumeric keypress so that
|
|
146
|
+
* barcode-scanner buffers can flow into `UntypedInputContext`
|
|
147
|
+
* instead. For a plain quick-find search field we want every key
|
|
148
|
+
* to land in the input rather than the input blurring after the
|
|
149
|
+
* first character. Returns immediately and lets the keystroke
|
|
150
|
+
* continue to bubble so the side-panel's window-level Escape
|
|
151
|
+
* handler still closes the panel.
|
|
152
|
+
*/
|
|
153
|
+
function noopKeydown(_e: KeyboardEvent): void {
|
|
154
|
+
// intentionally empty
|
|
155
|
+
}
|
|
156
|
+
</script>
|
|
157
|
+
|
|
158
|
+
<svelte:window onclick={handleWindowClick} />
|
|
159
|
+
|
|
160
|
+
<section class="side-panel-section">
|
|
161
|
+
<header class="side-panel-header">
|
|
162
|
+
<h2>Advanced Filter</h2>
|
|
163
|
+
</header>
|
|
164
|
+
|
|
165
|
+
<div class="toolbar">
|
|
166
|
+
<div class="quick-find">
|
|
167
|
+
<TextInput
|
|
168
|
+
labelTop="Quick Find a Filter"
|
|
169
|
+
placeholder="Filter…"
|
|
170
|
+
bind:value={quickFindValue}
|
|
171
|
+
rightIcon={{ name: 'search', size: Size.Medium }}
|
|
172
|
+
onkeydown={noopKeydown}
|
|
173
|
+
/>
|
|
174
|
+
</div>
|
|
175
|
+
|
|
176
|
+
<div class="save-filter-cluster">
|
|
177
|
+
<Button
|
|
178
|
+
variant={Variant.Secondary}
|
|
179
|
+
nowrap
|
|
180
|
+
disabled
|
|
181
|
+
size={Size.MediumSmall}
|
|
182
|
+
onclick={saveFilter}>Save Filter</Button
|
|
183
|
+
>
|
|
184
|
+
<Action
|
|
185
|
+
label="More save options"
|
|
186
|
+
colourSet={ColourSet.Auxiliary}
|
|
187
|
+
icon={{ name: 'chevron-down', size: Size.Medium }}
|
|
188
|
+
onclick={() => {
|
|
189
|
+
saveMenuOpen = !saveMenuOpen;
|
|
190
|
+
}}
|
|
191
|
+
/>
|
|
192
|
+
{#if saveMenuOpen}
|
|
193
|
+
<div class="save-menu">
|
|
194
|
+
<button
|
|
195
|
+
type="button"
|
|
196
|
+
class="save-menu-item"
|
|
197
|
+
onclick={() => {
|
|
198
|
+
saveMenuOpen = false;
|
|
199
|
+
resetFilters();
|
|
200
|
+
}}>Reset all filters</button
|
|
201
|
+
>
|
|
202
|
+
</div>
|
|
203
|
+
{/if}
|
|
204
|
+
</div>
|
|
205
|
+
</div>
|
|
206
|
+
|
|
207
|
+
<div class="side-panel-body">
|
|
208
|
+
{#if filterableDefs.length === 0}
|
|
209
|
+
<p class="empty">No filterable columns.</p>
|
|
210
|
+
{:else if matchingDefs.length === 0}
|
|
211
|
+
<p class="empty">
|
|
212
|
+
No filters match “{quickFindValue}”.
|
|
213
|
+
</p>
|
|
214
|
+
{:else}
|
|
215
|
+
<div class="groups">
|
|
216
|
+
{#each orderedGroupNames as groupName (groupName)}
|
|
217
|
+
{@const defsInGroup = groupedDefs.get(groupName) ?? []}
|
|
218
|
+
{@const isCollapsed = collapsedGroups.has(groupName)}
|
|
219
|
+
{#if defsInGroup.length > 0}
|
|
220
|
+
<section
|
|
221
|
+
class="group"
|
|
222
|
+
class:collapsed={isCollapsed}
|
|
223
|
+
>
|
|
224
|
+
<header class="group-header">
|
|
225
|
+
<h3>{groupName}</h3>
|
|
226
|
+
<Action
|
|
227
|
+
label={isCollapsed ? `Expand ${groupName}` : `Collapse ${groupName}`}
|
|
228
|
+
colourSet={ColourSet.Auxiliary}
|
|
229
|
+
icon={{
|
|
230
|
+
name: isCollapsed ? 'circle-plus' : 'circle-minus',
|
|
231
|
+
size: Size.Medium,
|
|
232
|
+
colour: Colour['$ui-blue-9'],
|
|
233
|
+
}}
|
|
234
|
+
onclick={() => {
|
|
235
|
+
toggleGroup(groupName);
|
|
236
|
+
}}
|
|
237
|
+
/>
|
|
238
|
+
</header>
|
|
239
|
+
{#if !isCollapsed}
|
|
240
|
+
<div class="group-body">
|
|
241
|
+
{#each defsInGroup as def (def.id)}
|
|
242
|
+
<FilterInput
|
|
243
|
+
{def}
|
|
244
|
+
customFilters={tableContext.remoteFilters}
|
|
245
|
+
/>
|
|
246
|
+
{/each}
|
|
247
|
+
</div>
|
|
248
|
+
{/if}
|
|
249
|
+
</section>
|
|
250
|
+
{/if}
|
|
251
|
+
{/each}
|
|
252
|
+
</div>
|
|
253
|
+
{/if}
|
|
254
|
+
</div>
|
|
255
|
+
</section>
|
|
256
|
+
|
|
257
257
|
<style>.side-panel-section {
|
|
258
258
|
display: flex;
|
|
259
259
|
flex-flow: column nowrap;
|
|
@@ -413,4 +413,4 @@ p.empty {
|
|
|
413
413
|
display: flex;
|
|
414
414
|
flex-flow: column nowrap;
|
|
415
415
|
gap: 0.5rem;
|
|
416
|
-
}</style>
|
|
416
|
+
}</style>
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
<svelte:options runes />
|
|
2
|
-
|
|
3
|
-
<script
|
|
4
|
-
lang="ts"
|
|
5
|
-
module
|
|
6
|
-
>
|
|
7
|
-
import TouchModal from '../../Touch/TouchModal.svelte';
|
|
8
|
-
import FilterPanel from './FilterPanel.svelte';
|
|
9
|
-
|
|
10
|
-
export interface FilterPanelModalProps {
|
|
11
|
-
onclose?: () => void;
|
|
12
|
-
}
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
<script lang="ts">
|
|
16
|
-
const { onclose }: FilterPanelModalProps = $props();
|
|
17
|
-
</script>
|
|
18
|
-
|
|
19
|
-
<TouchModal
|
|
20
|
-
width="800px"
|
|
21
|
-
header="Filter by"
|
|
22
|
-
onclose={() => onclose?.()}
|
|
23
|
-
buttons={[{ label: 'Close', callback: () => onclose?.() }]}
|
|
24
|
-
>
|
|
25
|
-
<div class="flex">
|
|
26
|
-
<FilterPanel />
|
|
27
|
-
</div>
|
|
28
|
-
</TouchModal>
|
|
29
|
-
|
|
1
|
+
<svelte:options runes />
|
|
2
|
+
|
|
3
|
+
<script
|
|
4
|
+
lang="ts"
|
|
5
|
+
module
|
|
6
|
+
>
|
|
7
|
+
import TouchModal from '../../Touch/TouchModal.svelte';
|
|
8
|
+
import FilterPanel from './FilterPanel.svelte';
|
|
9
|
+
|
|
10
|
+
export interface FilterPanelModalProps {
|
|
11
|
+
onclose?: () => void;
|
|
12
|
+
}
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<script lang="ts">
|
|
16
|
+
const { onclose }: FilterPanelModalProps = $props();
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<TouchModal
|
|
20
|
+
width="800px"
|
|
21
|
+
header="Filter by"
|
|
22
|
+
onclose={() => onclose?.()}
|
|
23
|
+
buttons={[{ label: 'Close', callback: () => onclose?.() }]}
|
|
24
|
+
>
|
|
25
|
+
<div class="flex">
|
|
26
|
+
<FilterPanel />
|
|
27
|
+
</div>
|
|
28
|
+
</TouchModal>
|
|
29
|
+
|
|
30
30
|
<style>.flex {
|
|
31
31
|
display: flex;
|
|
32
32
|
flex-flow: column nowrap;
|
|
@@ -34,4 +34,4 @@
|
|
|
34
34
|
width: 100%;
|
|
35
35
|
flex: 1;
|
|
36
36
|
overflow: hidden;
|
|
37
|
-
}</style>
|
|
37
|
+
}</style>
|