@maggioli-design-system/mds-progress 3.0.1 → 3.0.2
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/dist/cjs/{index-91b93373.js → index-abfa4aa9.js} +161 -66
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/mds-progress.cjs.entry.js +13 -2
- package/dist/cjs/mds-progress.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/common/floating-controller.js +180 -0
- package/dist/collection/common/slot.js +19 -0
- package/dist/collection/components/mds-progress/mds-progress.js +20 -1
- package/dist/collection/dictionary/animation.js +5 -0
- package/dist/collection/dictionary/file-extensions.js +6 -59
- package/dist/collection/dictionary/tree.js +13 -0
- package/dist/collection/fixtures/filenames.js +62 -1
- package/dist/collection/type/animation.js +1 -0
- package/dist/collection/type/tree.js +1 -0
- package/dist/collection/type/variant-file-format.js +5 -0
- package/dist/components/mds-progress.js +12 -1
- package/dist/documentation.d.ts +8 -0
- package/dist/documentation.json +14 -6
- package/dist/esm/{index-c78d74f1.js → index-a89959e6.js} +161 -66
- package/dist/esm/loader.js +2 -2
- package/dist/esm/mds-progress.entry.js +13 -2
- package/dist/esm/mds-progress.js +3 -3
- package/dist/esm-es5/index-a89959e6.js +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/mds-progress.entry.js +1 -1
- package/dist/esm-es5/mds-progress.js +1 -1
- package/dist/mds-progress/mds-progress.esm.js +1 -1
- package/dist/mds-progress/mds-progress.js +1 -1
- package/dist/mds-progress/{p-aed14e74.system.entry.js → p-088b5b20.system.entry.js} +1 -1
- package/dist/mds-progress/{p-4484605e.system.js → p-2b265ffa.system.js} +1 -1
- package/dist/mds-progress/p-64876922.system.js +2 -0
- package/dist/mds-progress/p-8a9536f1.js +2 -0
- package/dist/mds-progress/p-d8baed2c.entry.js +1 -0
- package/dist/stats.json +71 -39
- package/dist/types/common/floating-controller.d.ts +46 -0
- package/dist/types/common/slot.d.ts +3 -0
- package/dist/types/dictionary/animation.d.ts +2 -0
- package/dist/types/dictionary/tree.d.ts +4 -0
- package/dist/types/fixtures/filenames.d.ts +62 -1
- package/dist/types/type/animation.d.ts +1 -0
- package/dist/types/type/file-types.d.ts +1 -1
- package/dist/types/type/tree.d.ts +3 -0
- package/dist/types/type/variant-file-format.d.ts +1 -1
- package/documentation.json +55 -17
- package/package.json +3 -3
- package/src/common/floating-controller.ts +263 -0
- package/src/common/slot.ts +24 -0
- package/src/dictionary/animation.ts +8 -0
- package/src/dictionary/file-extensions.ts +6 -60
- package/src/dictionary/tree.ts +21 -0
- package/src/fixtures/filenames.ts +63 -0
- package/src/fixtures/icons.json +21 -0
- package/src/fixtures/iconsauce.json +6 -0
- package/src/meta/file-format/locale.el.json +26 -21
- package/src/meta/file-format/locale.en.json +26 -21
- package/src/meta/file-format/locale.es.json +26 -21
- package/src/meta/file-format/locale.it.json +26 -21
- package/src/type/animation.ts +3 -0
- package/src/type/file-types.ts +6 -0
- package/src/type/tree.ts +12 -0
- package/src/type/variant-file-format.ts +6 -0
- package/www/build/mds-progress.esm.js +1 -1
- package/www/build/mds-progress.js +1 -1
- package/www/build/{p-aed14e74.system.entry.js → p-088b5b20.system.entry.js} +1 -1
- package/www/build/{p-4484605e.system.js → p-2b265ffa.system.js} +1 -1
- package/www/build/p-64876922.system.js +2 -0
- package/www/build/p-8a9536f1.js +2 -0
- package/www/build/p-d8baed2c.entry.js +1 -0
- package/dist/esm-es5/index-c78d74f1.js +0 -1
- package/dist/mds-progress/p-1a7421ef.system.js +0 -2
- package/dist/mds-progress/p-3fa56e3f.js +0 -2
- package/dist/mds-progress/p-ae143936.entry.js +0 -1
- package/www/build/p-1a7421ef.system.js +0 -2
- package/www/build/p-3fa56e3f.js +0 -2
- package/www/build/p-ae143936.entry.js +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ThemeFullVariantType } from "./variant";
|
|
2
|
-
type FileFormat = 'archive' | 'attachment' | 'audio' | 'code' | 'data' | 'document' | 'email' | 'executable' | 'image' | 'markup' | 'slide' | 'spreadsheet' | 'text' | 'vector' | 'video';
|
|
2
|
+
type FileFormat = 'archive' | 'attachment' | 'audio' | 'certificate' | 'code' | 'data' | 'document' | 'email' | 'executable' | 'image' | 'markup' | 'slide' | 'spreadsheet' | 'text' | 'vector' | 'video';
|
|
3
3
|
interface FileFormatVariant {
|
|
4
4
|
icon: string;
|
|
5
5
|
variant: ThemeFullVariantType;
|
package/documentation.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"timestamp": "
|
|
2
|
+
"timestamp": "2025-02-06T07:52:44",
|
|
3
3
|
"compiler": {
|
|
4
4
|
"name": "@stencil/core",
|
|
5
|
-
"version": "4.
|
|
5
|
+
"version": "4.25.1",
|
|
6
6
|
"typescriptVersion": "5.5.4"
|
|
7
7
|
},
|
|
8
8
|
"components": [
|
|
@@ -49,7 +49,9 @@
|
|
|
49
49
|
}
|
|
50
50
|
],
|
|
51
51
|
"optional": true,
|
|
52
|
-
"required": false
|
|
52
|
+
"required": false,
|
|
53
|
+
"getter": false,
|
|
54
|
+
"setter": false
|
|
53
55
|
},
|
|
54
56
|
{
|
|
55
57
|
"name": "progress",
|
|
@@ -71,7 +73,9 @@
|
|
|
71
73
|
}
|
|
72
74
|
],
|
|
73
75
|
"optional": false,
|
|
74
|
-
"required": false
|
|
76
|
+
"required": false,
|
|
77
|
+
"getter": false,
|
|
78
|
+
"setter": false
|
|
75
79
|
},
|
|
76
80
|
{
|
|
77
81
|
"name": "steps",
|
|
@@ -93,7 +97,9 @@
|
|
|
93
97
|
}
|
|
94
98
|
],
|
|
95
99
|
"optional": false,
|
|
96
|
-
"required": false
|
|
100
|
+
"required": false,
|
|
101
|
+
"getter": false,
|
|
102
|
+
"setter": false
|
|
97
103
|
},
|
|
98
104
|
{
|
|
99
105
|
"name": "variant",
|
|
@@ -146,7 +152,9 @@
|
|
|
146
152
|
}
|
|
147
153
|
],
|
|
148
154
|
"optional": false,
|
|
149
|
-
"required": false
|
|
155
|
+
"required": false,
|
|
156
|
+
"getter": false,
|
|
157
|
+
"setter": false
|
|
150
158
|
}
|
|
151
159
|
],
|
|
152
160
|
"methods": [],
|
|
@@ -325,6 +333,11 @@
|
|
|
325
333
|
"docstring": "",
|
|
326
334
|
"path": "src/type/button.ts"
|
|
327
335
|
},
|
|
336
|
+
"src/type/text.ts::TypographyTruncateType": {
|
|
337
|
+
"declaration": "export type TypographyTruncateType =\n | 'all'\n | 'none'\n | 'word'",
|
|
338
|
+
"docstring": "",
|
|
339
|
+
"path": "src/type/text.ts"
|
|
340
|
+
},
|
|
328
341
|
"src/type/variant.ts::ChipVariantType": {
|
|
329
342
|
"declaration": "export type ChipVariantType =\n | 'primary'\n | 'secondary'\n | 'dark'\n | 'error'\n | 'info'\n | 'success'\n | 'warning'",
|
|
330
343
|
"docstring": "",
|
|
@@ -356,7 +369,7 @@
|
|
|
356
369
|
"path": "src/components/mds-dropdown/meta/event-detail.ts"
|
|
357
370
|
},
|
|
358
371
|
"src/type/file-types.ts::ExtensionSuffixType": {
|
|
359
|
-
"declaration": "export type ExtensionSuffixType =\n | '7z'\n | 'ace'\n | 'ai'\n | 'db'\n | 'default'\n | 'dmg'\n | 'doc'\n | 'docm'\n | 'docx'\n | 'eml'\n | 'eps'\n | 'exe'\n | 'flac'\n | 'gif'\n | 'heic'\n | 'htm'\n | 'html'\n | 'jpe'\n | 'jpeg'\n | 'jpg'\n | 'js'\n | 'json'\n | 'jsx'\n | 'm2v'\n | 'mp2'\n | 'mp3'\n | 'mp4'\n | 'mp4v'\n | 'mpeg'\n | 'mpg'\n | 'mpg4'\n | 'mpga'\n | 'odp'\n | 'ods'\n | 'odt'\n | 'pdf'\n | 'php'\n | 'png'\n | 'ppt'\n | 'rar'\n | 'rtf'\n | 'sass'\n | 'shtml'\n | 'svg'\n | 'tar'\n | 'tiff'\n | 'ts'\n | 'txt'\n | 'wav'\n | 'webp'\n | 'xar'\n | 'xls'\n | 'xlsx'\n | 'zip'",
|
|
372
|
+
"declaration": "export type ExtensionSuffixType =\n | '7z'\n | 'ace'\n | 'ai'\n | 'db'\n | 'default'\n | 'dmg'\n | 'doc'\n | 'docm'\n | 'docx'\n | 'eml'\n | 'eps'\n | 'exe'\n | 'flac'\n | 'gif'\n | 'heic'\n | 'htm'\n | 'html'\n | 'jpe'\n | 'jpeg'\n | 'jpg'\n | 'js'\n | 'json'\n | 'jsx'\n | 'm2v'\n | 'mp2'\n | 'mp3'\n | 'mp4'\n | 'mp4v'\n | 'mpeg'\n | 'mpg'\n | 'mpg4'\n | 'mpga'\n | 'odf'\n | 'odp'\n | 'ods'\n | 'odt'\n | 'odt'\n | 'ole'\n | 'p7m'\n | 'pdf'\n | 'php'\n | 'png'\n | 'ppt'\n | 'rar'\n | 'rtf'\n | 'sass'\n | 'shtml'\n | 'svg'\n | 'tar'\n | 'tiff'\n | 'ts'\n | 'tsd'\n | 'txt'\n | 'wav'\n | 'webp'\n | 'xar'\n | 'xls'\n | 'xlsx'\n | 'xml'\n | 'zip'",
|
|
360
373
|
"docstring": "",
|
|
361
374
|
"path": "src/type/file-types.ts"
|
|
362
375
|
},
|
|
@@ -365,11 +378,6 @@
|
|
|
365
378
|
"docstring": "",
|
|
366
379
|
"path": "src/components/mds-file/meta/event-detail.ts"
|
|
367
380
|
},
|
|
368
|
-
"src/type/text.ts::TypographyTruncateType": {
|
|
369
|
-
"declaration": "export type TypographyTruncateType =\n | 'all'\n | 'none'\n | 'word'",
|
|
370
|
-
"docstring": "",
|
|
371
|
-
"path": "src/type/text.ts"
|
|
372
|
-
},
|
|
373
381
|
"src/components/mds-file-preview/meta/event-detail.ts::MdsFilePreviewEventDetail": {
|
|
374
382
|
"declaration": "export interface MdsFilePreviewEventDetail {\n extension: string\n filename: string\n target: HTMLMdsFilePreviewElement\n}",
|
|
375
383
|
"docstring": "",
|
|
@@ -595,11 +603,6 @@
|
|
|
595
603
|
"docstring": "",
|
|
596
604
|
"path": "src/components/mds-progress/meta/types.ts"
|
|
597
605
|
},
|
|
598
|
-
"src/type/date.ts::ISO8601Date": {
|
|
599
|
-
"declaration": "type ISO8601Date = ISO8601DateFormat<string, 'ISO8601Date'>",
|
|
600
|
-
"docstring": "",
|
|
601
|
-
"path": "src/type/date.ts"
|
|
602
|
-
},
|
|
603
606
|
"src/components/mds-push-notification/meta/types.ts::NotificationDateFormatType": {
|
|
604
607
|
"declaration": "string",
|
|
605
608
|
"docstring": "",
|
|
@@ -630,6 +633,11 @@
|
|
|
630
633
|
"docstring": "",
|
|
631
634
|
"path": "src/components/mds-stepper-bar-item/meta/event-detail.ts"
|
|
632
635
|
},
|
|
636
|
+
"src/type/animation.ts::HorizontalActionsAnimationType": {
|
|
637
|
+
"declaration": "export type HorizontalActionsAnimationType =\n | 'fade'\n | 'slide'",
|
|
638
|
+
"docstring": "",
|
|
639
|
+
"path": "src/type/animation.ts"
|
|
640
|
+
},
|
|
633
641
|
"src/components/mds-tab/meta/event-detail.ts::MdsTabEventDetail": {
|
|
634
642
|
"declaration": "export interface MdsTabEventDetail {\n id: number\n value?: string\n}",
|
|
635
643
|
"docstring": "",
|
|
@@ -650,6 +658,16 @@
|
|
|
650
658
|
"docstring": "",
|
|
651
659
|
"path": "src/components/mds-tab-item/meta/event-detail.ts"
|
|
652
660
|
},
|
|
661
|
+
"src/components/mds-table/meta/event-detail.ts::MdsTableSelectionEventDetail": {
|
|
662
|
+
"declaration": "export interface MdsTableSelectionEventDetail {\n rows: MdsTableRowSelection[]\n}",
|
|
663
|
+
"docstring": "",
|
|
664
|
+
"path": "src/components/mds-table/meta/event-detail.ts"
|
|
665
|
+
},
|
|
666
|
+
"src/components/mds-table/meta/type.ts::MdsTableRowSelection": {
|
|
667
|
+
"declaration": "{\n index: number\n value?: string | number\n}",
|
|
668
|
+
"docstring": "",
|
|
669
|
+
"path": "src/components/mds-table/meta/type.ts"
|
|
670
|
+
},
|
|
653
671
|
"src/components/mds-table-header-cell/meta/types.ts::SortDirectionType": {
|
|
654
672
|
"declaration": "export type SortDirectionType =\n | 'ascending'\n | 'descending'\n | 'none'",
|
|
655
673
|
"docstring": "",
|
|
@@ -680,6 +698,26 @@
|
|
|
680
698
|
"docstring": "",
|
|
681
699
|
"path": "src/type/typography.ts"
|
|
682
700
|
},
|
|
701
|
+
"src/type/tree.ts::TreeAppearance": {
|
|
702
|
+
"declaration": "export type TreeAppearance =\n | 'none'\n | 'depth'",
|
|
703
|
+
"docstring": "",
|
|
704
|
+
"path": "src/type/tree.ts"
|
|
705
|
+
},
|
|
706
|
+
"src/type/tree.ts::TreeIcon": {
|
|
707
|
+
"declaration": "export type TreeIcon =\n | 'folder'\n | 'chevron'",
|
|
708
|
+
"docstring": "",
|
|
709
|
+
"path": "src/type/tree.ts"
|
|
710
|
+
},
|
|
711
|
+
"src/type/tree.ts::TreeActions": {
|
|
712
|
+
"declaration": "export type TreeActions =\n | 'auto'\n | 'visible'",
|
|
713
|
+
"docstring": "",
|
|
714
|
+
"path": "src/type/tree.ts"
|
|
715
|
+
},
|
|
716
|
+
"src/components/mds-tree-item/meta/event-detail.ts::MdsTreeItemEventDetail": {
|
|
717
|
+
"declaration": "export interface MdsTreeItemEventDetail {\n element: HTMLMdsTreeItemElement\n}",
|
|
718
|
+
"docstring": "",
|
|
719
|
+
"path": "src/components/mds-tree-item/meta/event-detail.ts"
|
|
720
|
+
},
|
|
683
721
|
"src/components/mds-usage/meta/types.ts::UsageType": {
|
|
684
722
|
"declaration": "export type UsageType =\n | 'do'\n | 'dont'\n | 'info'\n | 'warn'",
|
|
685
723
|
"docstring": "",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maggioli-design-system/mds-progress",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.2",
|
|
4
4
|
"description": "mds-progress is a web-component from Magma Design System, built with StencilJS, TypeScript, Storybook. It's based on the web-component standard and it's designed to be agnostic from the JavaScript framework you are using.",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"test": "stencil test --spec --e2e"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@maggioli-design-system/styles": "15.
|
|
28
|
-
"@stencil/core": "4.
|
|
27
|
+
"@maggioli-design-system/styles": "15.7.0",
|
|
28
|
+
"@stencil/core": "4.25.1"
|
|
29
29
|
},
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"author": {
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import {
|
|
2
|
+
arrow,
|
|
3
|
+
autoPlacement,
|
|
4
|
+
autoUpdate,
|
|
5
|
+
computePosition,
|
|
6
|
+
flip,
|
|
7
|
+
Middleware,
|
|
8
|
+
MiddlewareData,
|
|
9
|
+
offset,
|
|
10
|
+
shift,
|
|
11
|
+
} from '@floating-ui/dom'
|
|
12
|
+
import { FloatingUIPlacement, FloatingUIStrategy } from '@type/floating-ui'
|
|
13
|
+
import { cssDurationToMilliseconds } from './unit'
|
|
14
|
+
import { setAttributeIfEmpty } from './aria'
|
|
15
|
+
import { HTMLStencilElement } from '@stencil/core/internal'
|
|
16
|
+
|
|
17
|
+
export interface FloatingElement extends PositionOptions {
|
|
18
|
+
host: HTMLFloatingElement,
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface HTMLFloatingElement extends HTMLStencilElement, PositionOptions {
|
|
22
|
+
visible: boolean,
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface PositionOptions {
|
|
26
|
+
arrow: boolean;
|
|
27
|
+
arrowPadding: number;
|
|
28
|
+
autoPlacement: boolean;
|
|
29
|
+
flip: boolean;
|
|
30
|
+
offset: number;
|
|
31
|
+
placement: FloatingUIPlacement;
|
|
32
|
+
shift: boolean;
|
|
33
|
+
shiftPadding: number;
|
|
34
|
+
strategy: FloatingUIStrategy;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export class FloatingController {
|
|
38
|
+
private _caller: HTMLElement
|
|
39
|
+
private readonly _host: HTMLFloatingElement
|
|
40
|
+
arrowEl: HTMLElement | undefined
|
|
41
|
+
|
|
42
|
+
private cleanupAutoUpdate: () => void
|
|
43
|
+
|
|
44
|
+
constructor (host: HTMLFloatingElement, arrowEl?: HTMLElement) {
|
|
45
|
+
this._host = host
|
|
46
|
+
this.arrowEl = arrowEl
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
updateCaller (target: string): HTMLElement {
|
|
50
|
+
// search caller in document or rootNode of host (if target is in shadowDOM)
|
|
51
|
+
const caller = (this._host.parentElement?.shadowRoot?.querySelector(target) as HTMLElement) ??
|
|
52
|
+
((this._host.getRootNode() as HTMLElement).querySelector(target) as HTMLElement)
|
|
53
|
+
|
|
54
|
+
if (!caller) {
|
|
55
|
+
throw Error(`Target not found: ${target}`)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
this._caller = caller
|
|
59
|
+
|
|
60
|
+
setAttributeIfEmpty(this._caller, 'aria-haspopup', 'true')
|
|
61
|
+
setAttributeIfEmpty(this._caller, 'aria-controls', target)
|
|
62
|
+
setAttributeIfEmpty(this._host, 'role', 'menu')
|
|
63
|
+
setAttributeIfEmpty(this._host, 'aria-labelledby', target)
|
|
64
|
+
return caller
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
private readonly arrowInset = (
|
|
68
|
+
middleware: MiddlewareData,
|
|
69
|
+
arrowPosition: string,
|
|
70
|
+
): { bottom?: string; left?: string; right?: string; top?: string } => {
|
|
71
|
+
const { arrow } = middleware
|
|
72
|
+
const inset = { bottom: '', left: '', right: '', top: '' }
|
|
73
|
+
|
|
74
|
+
if (arrow === undefined) {
|
|
75
|
+
return {}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
switch (arrowPosition) {
|
|
79
|
+
case 'bottom':
|
|
80
|
+
inset.left = arrow.x !== null ? `${arrow.x}px` : ''
|
|
81
|
+
inset.top = '100%'
|
|
82
|
+
break
|
|
83
|
+
case 'left':
|
|
84
|
+
inset.right = '100%'
|
|
85
|
+
inset.top = arrow.y !== null ? `${arrow.y}px` : ''
|
|
86
|
+
break
|
|
87
|
+
case 'right':
|
|
88
|
+
inset.left = '100%'
|
|
89
|
+
inset.top = arrow.y !== null ? `${arrow.y}px` : ''
|
|
90
|
+
break
|
|
91
|
+
case 'top':
|
|
92
|
+
inset.left = arrow.x !== null ? `${arrow.x}px` : ''
|
|
93
|
+
inset.top = ''
|
|
94
|
+
break
|
|
95
|
+
default:
|
|
96
|
+
break
|
|
97
|
+
}
|
|
98
|
+
return inset
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
private readonly arrowTransform = (
|
|
102
|
+
arrowPosition: string,
|
|
103
|
+
): { transform: string } => {
|
|
104
|
+
let transformProps = this._host.arrow && this._host.visible ? 'scale(1)' : 'scale(0)'
|
|
105
|
+
switch (arrowPosition) {
|
|
106
|
+
case 'bottom':
|
|
107
|
+
transformProps = `rotate(180deg) ${transformProps} translate(0, -100%)`
|
|
108
|
+
break
|
|
109
|
+
case 'left':
|
|
110
|
+
transformProps = `rotate(-90deg) ${transformProps} translate(50%, -50%)`
|
|
111
|
+
break
|
|
112
|
+
case 'right':
|
|
113
|
+
transformProps = `rotate(90deg) ${transformProps} translate(-50%, -50%)`
|
|
114
|
+
break
|
|
115
|
+
case 'top':
|
|
116
|
+
transformProps = `rotate(0deg) ${transformProps} translate(0, 0)`
|
|
117
|
+
break
|
|
118
|
+
default:
|
|
119
|
+
break
|
|
120
|
+
}
|
|
121
|
+
return { transform: transformProps }
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
private readonly arrowTransformOrigin = (
|
|
125
|
+
arrowPosition: string,
|
|
126
|
+
): { transformOrigin: string } => {
|
|
127
|
+
switch (arrowPosition) {
|
|
128
|
+
case 'bottom':
|
|
129
|
+
return { transformOrigin: 'center top' }
|
|
130
|
+
case 'left':
|
|
131
|
+
return { transformOrigin: 'right center' }
|
|
132
|
+
case 'right':
|
|
133
|
+
return { transformOrigin: 'left center' }
|
|
134
|
+
case 'top':
|
|
135
|
+
return { transformOrigin: 'center bottom' }
|
|
136
|
+
default:
|
|
137
|
+
return { transformOrigin: 'center top' }
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
private readonly calculatePosition = (): void => {
|
|
142
|
+
if (!this._caller) return
|
|
143
|
+
|
|
144
|
+
const middleware: Middleware[] = new Array<Middleware>()
|
|
145
|
+
const config: { padding?: number } = {}
|
|
146
|
+
|
|
147
|
+
if (this._host.shiftPadding) {
|
|
148
|
+
config.padding = this._host.shiftPadding
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (this._host.autoPlacement) {
|
|
152
|
+
middleware.push(autoPlacement())
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (this._host.offset) {
|
|
156
|
+
middleware.push(offset(this._host.offset))
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
if (!this._host.autoPlacement && this._host.flip) {
|
|
160
|
+
middleware.push(flip(config))
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (this._host.shift) {
|
|
164
|
+
middleware.push(shift(config))
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (this.arrowEl && this._host.arrow) {
|
|
168
|
+
middleware.push(
|
|
169
|
+
arrow({
|
|
170
|
+
element: this.arrowEl,
|
|
171
|
+
padding: this._host.arrowPadding,
|
|
172
|
+
}),
|
|
173
|
+
)
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
computePosition(this._caller, this._host, {
|
|
177
|
+
middleware,
|
|
178
|
+
placement: this._host.placement,
|
|
179
|
+
strategy: this._host.strategy,
|
|
180
|
+
}).then(({ x, y, placement, middlewareData }) => {
|
|
181
|
+
Object.assign(this._host.style, {
|
|
182
|
+
left: `${x}px`,
|
|
183
|
+
top: `${y}px`,
|
|
184
|
+
})
|
|
185
|
+
|
|
186
|
+
const arrowStyle = {}
|
|
187
|
+
const arrowPosition = {
|
|
188
|
+
top: 'bottom',
|
|
189
|
+
right: 'left',
|
|
190
|
+
bottom: 'top',
|
|
191
|
+
left: 'right',
|
|
192
|
+
}[placement.split('-')[0]]
|
|
193
|
+
|
|
194
|
+
if (arrowPosition && this.arrowEl) {
|
|
195
|
+
Object.assign(arrowStyle, this.arrowTransform(arrowPosition))
|
|
196
|
+
Object.assign(
|
|
197
|
+
arrowStyle,
|
|
198
|
+
this.arrowInset(middlewareData, arrowPosition),
|
|
199
|
+
)
|
|
200
|
+
Object.assign(arrowStyle, this.arrowTransformOrigin(arrowPosition))
|
|
201
|
+
Object.assign(this.arrowEl.style, arrowStyle)
|
|
202
|
+
}
|
|
203
|
+
})
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
updatePosition (): void {
|
|
207
|
+
if (this.cleanupAutoUpdate) this.cleanupAutoUpdate()
|
|
208
|
+
this.cleanupAutoUpdate = autoUpdate(this._caller, this._host, this.calculatePosition)
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
dismiss (): void {
|
|
212
|
+
this.cleanupAutoUpdate()
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export class Backdrop {
|
|
217
|
+
private readonly defaultBackdropId = 'mds-backdrop'
|
|
218
|
+
private readonly backdropBackgroundVisible = 'rgba(var(--magma-backdrop-color, 0 0 0) / var(--magma-backdrop-opacity, 0.1))'
|
|
219
|
+
private readonly backdropBackgroundHidden = 'rgba(var(--magma-backdrop-color, 0 0 0) / 0)'
|
|
220
|
+
|
|
221
|
+
private readonly backdropId
|
|
222
|
+
private readonly cssBackdropZIndex
|
|
223
|
+
private readonly cssBackdropDuration
|
|
224
|
+
|
|
225
|
+
private backdropEl: HTMLElement
|
|
226
|
+
private backdropTimer: NodeJS.Timeout
|
|
227
|
+
|
|
228
|
+
constructor (backdropId?: string) {
|
|
229
|
+
this.backdropId = backdropId ?? this.defaultBackdropId
|
|
230
|
+
this.cssBackdropZIndex = `var(--${this.backdropId}-z-index)`
|
|
231
|
+
this.cssBackdropDuration = `var(--${this.backdropId}-duration)`
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
attachBackdrop (): void {
|
|
235
|
+
if (!this.backdropEl) {
|
|
236
|
+
this.backdropEl = document.createElement('div')
|
|
237
|
+
this.backdropEl.className = this.backdropId
|
|
238
|
+
this.backdropEl.style.inset = '0'
|
|
239
|
+
this.backdropEl.style.pointerEvents = 'none'
|
|
240
|
+
this.backdropEl.style.position = 'fixed'
|
|
241
|
+
this.backdropEl.style.transition = `background-color ${this.cssBackdropDuration} ease-out`
|
|
242
|
+
this.backdropEl.style.zIndex = this.cssBackdropZIndex
|
|
243
|
+
}
|
|
244
|
+
this.backdropEl.style.backgroundColor = this.backdropBackgroundHidden
|
|
245
|
+
document.body.appendChild(this.backdropEl)
|
|
246
|
+
|
|
247
|
+
clearTimeout(this.backdropTimer)
|
|
248
|
+
this.backdropTimer = setTimeout(() => {
|
|
249
|
+
this.backdropEl.style.backgroundColor = this.backdropBackgroundVisible
|
|
250
|
+
}, 1)
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
detachBackdrop (): void {
|
|
254
|
+
if (!this.backdropEl) {
|
|
255
|
+
return
|
|
256
|
+
}
|
|
257
|
+
this.backdropEl.style.backgroundColor = 'transparent'
|
|
258
|
+
clearTimeout(this.backdropTimer)
|
|
259
|
+
this.backdropTimer = setTimeout(() => {
|
|
260
|
+
this.backdropEl.remove()
|
|
261
|
+
}, cssDurationToMilliseconds(this.cssBackdropDuration))
|
|
262
|
+
}
|
|
263
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const hasSlottedElements = (el: HTMLElement, name?: string): boolean => {
|
|
2
|
+
const query = name ? `slot[name="${name}"]` : 'slot:not([name])'
|
|
3
|
+
|
|
4
|
+
const slot: HTMLSlotElement = el.shadowRoot?.querySelector(query) as HTMLSlotElement
|
|
5
|
+
if (slot) {
|
|
6
|
+
return slot.assignedElements({ flatten: true }).length > 0
|
|
7
|
+
}
|
|
8
|
+
return false
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const hasSlottedNodes = (el: HTMLElement, name?: string): boolean => {
|
|
12
|
+
const query = name ? `slot[name="${name}"]` : 'slot:not([name])'
|
|
13
|
+
|
|
14
|
+
const slot: HTMLSlotElement = el.shadowRoot?.querySelector(query) as HTMLSlotElement
|
|
15
|
+
if (slot) {
|
|
16
|
+
return slot.assignedNodes().length > 0
|
|
17
|
+
}
|
|
18
|
+
return false
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export {
|
|
22
|
+
hasSlottedElements,
|
|
23
|
+
hasSlottedNodes,
|
|
24
|
+
}
|
|
@@ -26,8 +26,8 @@ const fileExtensionsDictionary: FileExtenstion = {
|
|
|
26
26
|
exe: { format: 'executable', description: 'fileEXE' },
|
|
27
27
|
flac: { format: 'audio', description: 'uncompressedAudio' },
|
|
28
28
|
gif: { format: 'image', description: 'compressedImage', preview: true },
|
|
29
|
-
htm: { format: 'markup', description: 'documentWeb' },
|
|
30
29
|
heic: { format: 'image', description: 'imageHEFF' },
|
|
30
|
+
htm: { format: 'markup', description: 'documentWeb' },
|
|
31
31
|
html: { format: 'markup', description: 'documentWeb' },
|
|
32
32
|
jpe: { format: 'image', description: 'compressedImage', preview: true },
|
|
33
33
|
jpeg: { format: 'image', description: 'compressedImage', preview: true },
|
|
@@ -44,9 +44,12 @@ const fileExtensionsDictionary: FileExtenstion = {
|
|
|
44
44
|
mpg4: { format: 'video', description: 'videoSD' },
|
|
45
45
|
mpg: { format: 'video', description: 'videoSD' },
|
|
46
46
|
mpga: { format: 'audio', description: 'compressedAudio' },
|
|
47
|
+
odf: { format: 'document', description: 'openDocumentFormat' },
|
|
47
48
|
odp: { format: 'slide', description: 'slideLO' },
|
|
48
49
|
ods: { format: 'spreadsheet', description: 'spreadsheetLO' },
|
|
49
50
|
odt: { format: 'text', description: 'documentLO' },
|
|
51
|
+
ole: { format: 'document', description: 'objectLinkingAndEmbedding' },
|
|
52
|
+
p7m: { format: 'certificate', description: 'documentDigitalSingnature' },
|
|
50
53
|
pdf: { format: 'document', description: 'documentAdobe' },
|
|
51
54
|
php: { format: 'code', description: 'filePHP' },
|
|
52
55
|
png: { format: 'image', description: 'imagePNG', preview: true },
|
|
@@ -59,6 +62,7 @@ const fileExtensionsDictionary: FileExtenstion = {
|
|
|
59
62
|
tar: { format: 'archive', description: 'uncompressedArchive' },
|
|
60
63
|
tiff: { format: 'image', description: 'imageTIFF' },
|
|
61
64
|
ts: { format: 'code', description: 'fileTS' },
|
|
65
|
+
tsd: { format: 'certificate', description: 'certificateTSD' },
|
|
62
66
|
tsx: { format: 'code', description: 'fileTSX' },
|
|
63
67
|
txt: { format: 'text', description: 'documentTXT' },
|
|
64
68
|
wav: { format: 'audio', description: 'uncompressedAudio' },
|
|
@@ -66,68 +70,10 @@ const fileExtensionsDictionary: FileExtenstion = {
|
|
|
66
70
|
xar: { format: 'archive', description: 'compressedArchive' },
|
|
67
71
|
xls: { format: 'spreadsheet', description: 'spreadsheetMS' },
|
|
68
72
|
xlsx: { format: 'spreadsheet', description: 'spreadsheetMS' },
|
|
73
|
+
xml: { format: 'markup', description: 'extensibleMarkupLanguage' },
|
|
69
74
|
zip: { format: 'archive', description: 'compressedArchive' },
|
|
70
75
|
}
|
|
71
76
|
|
|
72
|
-
// const fileExtensionsDictionary: FileExtenstion = {
|
|
73
|
-
// '7z': { format: 'archive', description: 'Archivio compresso' },
|
|
74
|
-
// ace: { format: 'archive', description: 'Archivio compresso' },
|
|
75
|
-
// ai: { format: 'vector', description: 'Vettoriale Adobe Illustrator' },
|
|
76
|
-
// dart: { format: 'code', description: 'Dart' },
|
|
77
|
-
// db: { format: 'data', description: 'File di database' },
|
|
78
|
-
// default: { format: 'attachment', description: 'Formato sconosciuto' },
|
|
79
|
-
// dmg: { format: 'executable', description: 'Apple Disk Image' },
|
|
80
|
-
// doc: { format: 'text', description: 'Documento Microsoft Word' },
|
|
81
|
-
// docm: { format: 'text', description: 'Documento Microsoft Word' },
|
|
82
|
-
// docx: { format: 'text', description: 'Documento Microsoft Word Compresso' },
|
|
83
|
-
// eml: { format: 'email', description: 'E-mail di posta elettronica' },
|
|
84
|
-
// eps: { format: 'vector', description: 'Vettoriale Corel Draw' },
|
|
85
|
-
// exe: { format: 'executable', description: 'File eseguibile Windows' },
|
|
86
|
-
// flac: { format: 'audio', description: 'Audio non compresso' },
|
|
87
|
-
// gif: { format: 'image', description: 'Immagine compressa', preview: true },
|
|
88
|
-
// htm: { format: 'markup', description: 'Pagina web' },
|
|
89
|
-
// heic: { format: 'image', description: 'High Efficiency Image File Format' },
|
|
90
|
-
// html: { format: 'markup', description: 'Pagina web' },
|
|
91
|
-
// jpe: { format: 'image', description: 'Immagine compressa', preview: true },
|
|
92
|
-
// jpeg: { format: 'image', description: 'Immagine compressa', preview: true },
|
|
93
|
-
// jpg: { format: 'image', description: 'Immagine compressa', preview: true },
|
|
94
|
-
// js: { format: 'code', description: 'JavaScript' },
|
|
95
|
-
// json: { format: 'data', description: 'JavaScript Object Notation' },
|
|
96
|
-
// jsx: { format: 'code', description: 'JavaScript' },
|
|
97
|
-
// m2v: { format: 'video', description: 'Filmato SD' },
|
|
98
|
-
// mp2: { format: 'audio', description: 'Audio compresso' },
|
|
99
|
-
// mp3: { format: 'audio', description: 'Audio compresso' },
|
|
100
|
-
// mp4: { format: 'video', description: 'Filmato HD' },
|
|
101
|
-
// mp4v: { format: 'video', description: 'Filmato HD' },
|
|
102
|
-
// mpeg: { format: 'video', description: 'Filmato SD' },
|
|
103
|
-
// mpg4: { format: 'video', description: 'Filmato SD' },
|
|
104
|
-
// mpg: { format: 'video', description: 'Filmato SD' },
|
|
105
|
-
// mpga: { format: 'audio', description: 'Audio compresso' },
|
|
106
|
-
// odp: { format: 'slide', description: 'Slide di presentazione LibreOffice' },
|
|
107
|
-
// ods: { format: 'spreadsheet', description: 'Foglio di calcolo LibreOffice' },
|
|
108
|
-
// odt: { format: 'text', description: 'File di testo LibreOffice' },
|
|
109
|
-
// pdf: { format: 'document', description: 'Documento Adobe' },
|
|
110
|
-
// php: { format: 'code', description: 'Hypertext Preprocessor' },
|
|
111
|
-
// png: { format: 'image', description: 'Immagine Portable Network Graphics', preview: true },
|
|
112
|
-
// ppt: { format: 'slide', description: 'Slide di presentazione PowerPoint' },
|
|
113
|
-
// rar: { format: 'archive', description: 'Archivio compresso' },
|
|
114
|
-
// rtf: { format: 'text', description: 'Documento di testo Rich Text Format' },
|
|
115
|
-
// sass: { format: 'code', description: 'Syntactically Awesome StyleSheets' },
|
|
116
|
-
// shtml: { format: 'markup', description: 'Pagina web' },
|
|
117
|
-
// svg: { format: 'vector', description: 'Scalable Vector Graphics', preview: true },
|
|
118
|
-
// tar: { format: 'archive', description: 'Archivio non compresso' },
|
|
119
|
-
// tiff: { format: 'image', description: 'Tag Image File Format' },
|
|
120
|
-
// ts: { format: 'code', description: 'TypeScript' },
|
|
121
|
-
// tsx: { format: 'code', description: 'TypeScript Extended Syntax' },
|
|
122
|
-
// txt: { format: 'text', description: 'Documento di testo non formattato' },
|
|
123
|
-
// wav: { format: 'audio', description: 'Audio non compresso' },
|
|
124
|
-
// webp: { format: 'image', description: 'Immagine Web Picture', preview: true },
|
|
125
|
-
// xar: { format: 'archive', description: 'Archivio compresso' },
|
|
126
|
-
// xls: { format: 'spreadsheet', description: 'Foglio di calcolo Office' },
|
|
127
|
-
// xlsx: { format: 'spreadsheet', description: 'Foglio di calcolo Office' },
|
|
128
|
-
// zip: { format: 'archive', description: 'Archivio compresso' },
|
|
129
|
-
// }
|
|
130
|
-
|
|
131
77
|
const genericMimeToExt: Map<string, string[]> = new Map([
|
|
132
78
|
['image', ['.png', '.jpg', '.jpeg', '.tiff', '.webp', '.jpe', '.gif', '.heic']],
|
|
133
79
|
['audio', ['.mp2', '.mp3', '.mpga', '.wav', '.flac']],
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const treeActionsDictionary = [
|
|
2
|
+
'auto',
|
|
3
|
+
'visible',
|
|
4
|
+
]
|
|
5
|
+
|
|
6
|
+
const treeAppearanceDictionary = [
|
|
7
|
+
'depth',
|
|
8
|
+
'none',
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
const treeIconDictionary = [
|
|
12
|
+
'folder',
|
|
13
|
+
'chevron',
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
export {
|
|
17
|
+
treeActionsDictionary,
|
|
18
|
+
treeAppearanceDictionary,
|
|
19
|
+
treeIconDictionary,
|
|
20
|
+
}
|
|
21
|
+
|