@kubex/zinc 1.1.71 → 1.1.73
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/custom-elements.json +87 -74
- package/dist/vscode.html-custom-data.json +11 -11
- package/dist/web-types.json +23 -23
- package/dist/zn.d.ts +1 -0
- package/dist/zn.min.js +49 -25
- package/package.json +1 -1
- package/src/components/icon-picker/icon-picker.component.ts +55 -24
- package/src/components/icon-picker/icon-picker.scss +82 -0
|
@@ -47,6 +47,79 @@
|
|
|
47
47
|
}
|
|
48
48
|
]
|
|
49
49
|
},
|
|
50
|
+
{
|
|
51
|
+
"kind": "javascript-module",
|
|
52
|
+
"path": "components/action-bar/action-bar.js",
|
|
53
|
+
"declarations": [
|
|
54
|
+
{
|
|
55
|
+
"kind": "class",
|
|
56
|
+
"description": "",
|
|
57
|
+
"name": "ZnActionBar",
|
|
58
|
+
"cssProperties": [
|
|
59
|
+
{
|
|
60
|
+
"description": "An example CSS custom property.",
|
|
61
|
+
"name": "--example"
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"cssParts": [
|
|
65
|
+
{
|
|
66
|
+
"description": "The component's base wrapper.",
|
|
67
|
+
"name": "base"
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"slots": [
|
|
71
|
+
{
|
|
72
|
+
"description": "The default slot.",
|
|
73
|
+
"name": ""
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"description": "An example slot.",
|
|
77
|
+
"name": "example"
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
"members": [
|
|
81
|
+
{
|
|
82
|
+
"kind": "field",
|
|
83
|
+
"name": "localize",
|
|
84
|
+
"privacy": "private",
|
|
85
|
+
"readonly": true,
|
|
86
|
+
"default": "new LocalizeController(this)"
|
|
87
|
+
}
|
|
88
|
+
],
|
|
89
|
+
"events": [
|
|
90
|
+
{
|
|
91
|
+
"description": "Emitted as an example.",
|
|
92
|
+
"name": "zn-event-name"
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"superclass": {
|
|
96
|
+
"name": "ZincElement",
|
|
97
|
+
"module": "/src/internal/zinc-element"
|
|
98
|
+
},
|
|
99
|
+
"summary": "Short summary of the component's intended use.",
|
|
100
|
+
"tagNameWithoutPrefix": "action-bar",
|
|
101
|
+
"tagName": "zn-action-bar",
|
|
102
|
+
"customElement": true,
|
|
103
|
+
"jsDoc": "/**\n * @summary Short summary of the component's intended use.\n * @documentation https://zinc.style/components/action-bar\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-example\n *\n * @event zn-event-name - Emitted as an example.\n *\n * @slot - The default slot.\n * @slot example - An example slot.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty --example - An example CSS custom property.\n */",
|
|
104
|
+
"documentation": "https://zinc.style/components/action-bar",
|
|
105
|
+
"status": "experimental",
|
|
106
|
+
"since": "1.0",
|
|
107
|
+
"dependencies": [
|
|
108
|
+
"zn-example"
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
],
|
|
112
|
+
"exports": [
|
|
113
|
+
{
|
|
114
|
+
"kind": "js",
|
|
115
|
+
"name": "default",
|
|
116
|
+
"declaration": {
|
|
117
|
+
"name": "ZnActionBar",
|
|
118
|
+
"module": "components/action-bar/action-bar.js"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
},
|
|
50
123
|
{
|
|
51
124
|
"kind": "javascript-module",
|
|
52
125
|
"path": "components/alert/alert.js",
|
|
@@ -241,79 +314,6 @@
|
|
|
241
314
|
}
|
|
242
315
|
]
|
|
243
316
|
},
|
|
244
|
-
{
|
|
245
|
-
"kind": "javascript-module",
|
|
246
|
-
"path": "components/action-bar/action-bar.js",
|
|
247
|
-
"declarations": [
|
|
248
|
-
{
|
|
249
|
-
"kind": "class",
|
|
250
|
-
"description": "",
|
|
251
|
-
"name": "ZnActionBar",
|
|
252
|
-
"cssProperties": [
|
|
253
|
-
{
|
|
254
|
-
"description": "An example CSS custom property.",
|
|
255
|
-
"name": "--example"
|
|
256
|
-
}
|
|
257
|
-
],
|
|
258
|
-
"cssParts": [
|
|
259
|
-
{
|
|
260
|
-
"description": "The component's base wrapper.",
|
|
261
|
-
"name": "base"
|
|
262
|
-
}
|
|
263
|
-
],
|
|
264
|
-
"slots": [
|
|
265
|
-
{
|
|
266
|
-
"description": "The default slot.",
|
|
267
|
-
"name": ""
|
|
268
|
-
},
|
|
269
|
-
{
|
|
270
|
-
"description": "An example slot.",
|
|
271
|
-
"name": "example"
|
|
272
|
-
}
|
|
273
|
-
],
|
|
274
|
-
"members": [
|
|
275
|
-
{
|
|
276
|
-
"kind": "field",
|
|
277
|
-
"name": "localize",
|
|
278
|
-
"privacy": "private",
|
|
279
|
-
"readonly": true,
|
|
280
|
-
"default": "new LocalizeController(this)"
|
|
281
|
-
}
|
|
282
|
-
],
|
|
283
|
-
"events": [
|
|
284
|
-
{
|
|
285
|
-
"description": "Emitted as an example.",
|
|
286
|
-
"name": "zn-event-name"
|
|
287
|
-
}
|
|
288
|
-
],
|
|
289
|
-
"superclass": {
|
|
290
|
-
"name": "ZincElement",
|
|
291
|
-
"module": "/src/internal/zinc-element"
|
|
292
|
-
},
|
|
293
|
-
"summary": "Short summary of the component's intended use.",
|
|
294
|
-
"tagNameWithoutPrefix": "action-bar",
|
|
295
|
-
"tagName": "zn-action-bar",
|
|
296
|
-
"customElement": true,
|
|
297
|
-
"jsDoc": "/**\n * @summary Short summary of the component's intended use.\n * @documentation https://zinc.style/components/action-bar\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-example\n *\n * @event zn-event-name - Emitted as an example.\n *\n * @slot - The default slot.\n * @slot example - An example slot.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty --example - An example CSS custom property.\n */",
|
|
298
|
-
"documentation": "https://zinc.style/components/action-bar",
|
|
299
|
-
"status": "experimental",
|
|
300
|
-
"since": "1.0",
|
|
301
|
-
"dependencies": [
|
|
302
|
-
"zn-example"
|
|
303
|
-
]
|
|
304
|
-
}
|
|
305
|
-
],
|
|
306
|
-
"exports": [
|
|
307
|
-
{
|
|
308
|
-
"kind": "js",
|
|
309
|
-
"name": "default",
|
|
310
|
-
"declaration": {
|
|
311
|
-
"name": "ZnActionBar",
|
|
312
|
-
"module": "components/action-bar/action-bar.js"
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
]
|
|
316
|
-
},
|
|
317
317
|
{
|
|
318
318
|
"kind": "javascript-module",
|
|
319
319
|
"path": "components/animated-button/animated-button.js",
|
|
@@ -17204,6 +17204,19 @@
|
|
|
17204
17204
|
"kind": "method",
|
|
17205
17205
|
"name": "_handleTriggerClick",
|
|
17206
17206
|
"privacy": "private"
|
|
17207
|
+
},
|
|
17208
|
+
{
|
|
17209
|
+
"kind": "method",
|
|
17210
|
+
"name": "_handleTriggerKeyDown",
|
|
17211
|
+
"privacy": "private",
|
|
17212
|
+
"parameters": [
|
|
17213
|
+
{
|
|
17214
|
+
"name": "e",
|
|
17215
|
+
"type": {
|
|
17216
|
+
"text": "KeyboardEvent"
|
|
17217
|
+
}
|
|
17218
|
+
}
|
|
17219
|
+
]
|
|
17207
17220
|
}
|
|
17208
17221
|
],
|
|
17209
17222
|
"attributes": [
|
|
@@ -43877,7 +43890,7 @@
|
|
|
43877
43890
|
"package": {
|
|
43878
43891
|
"name": "@kubex/zinc",
|
|
43879
43892
|
"description": "A collection of web components for building web applications based off of @shoelace-style/Shoelace",
|
|
43880
|
-
"version": "1.1.
|
|
43893
|
+
"version": "1.1.73",
|
|
43881
43894
|
"author": "",
|
|
43882
43895
|
"license": "MIT"
|
|
43883
43896
|
}
|
|
@@ -13,6 +13,17 @@
|
|
|
13
13
|
}
|
|
14
14
|
]
|
|
15
15
|
},
|
|
16
|
+
{
|
|
17
|
+
"name": "zn-action-bar",
|
|
18
|
+
"description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Slots:**\n - _default_ - The default slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--example** - An example CSS custom property. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
|
|
19
|
+
"attributes": [],
|
|
20
|
+
"references": [
|
|
21
|
+
{
|
|
22
|
+
"name": "Documentation",
|
|
23
|
+
"url": "https://zinc.style/components/action-bar"
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
},
|
|
16
27
|
{
|
|
17
28
|
"name": "zn-alert",
|
|
18
29
|
"description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Slots:**\n - _default_ - The default slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--example** - An example CSS custom property. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
|
|
@@ -53,17 +64,6 @@
|
|
|
53
64
|
}
|
|
54
65
|
]
|
|
55
66
|
},
|
|
56
|
-
{
|
|
57
|
-
"name": "zn-action-bar",
|
|
58
|
-
"description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Slots:**\n - _default_ - The default slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--example** - An example CSS custom property. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
|
|
59
|
-
"attributes": [],
|
|
60
|
-
"references": [
|
|
61
|
-
{
|
|
62
|
-
"name": "Documentation",
|
|
63
|
-
"url": "https://zinc.style/components/action-bar"
|
|
64
|
-
}
|
|
65
|
-
]
|
|
66
|
-
},
|
|
67
67
|
{
|
|
68
68
|
"name": "zn-animated-button",
|
|
69
69
|
"description": "\n---\n\n\n### **Methods:**\n - **purchase(): _void_** - Programmatically trigger the purchase flow\n- **setSuccess(): _void_** - Set the button to success state manually\n- **setFailure(message): _void_** - Set the button to failure state manually with optional error message\n- **reset(): _void_** - Reset the button to idle state",
|
package/dist/web-types.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
|
|
3
3
|
"name": "@kubex/zinc",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.73",
|
|
5
5
|
"description-markup": "markdown",
|
|
6
6
|
"contributions": {
|
|
7
7
|
"html": {
|
|
@@ -15,6 +15,28 @@
|
|
|
15
15
|
"events": [],
|
|
16
16
|
"js": { "properties": [], "events": [] }
|
|
17
17
|
},
|
|
18
|
+
{
|
|
19
|
+
"name": "zn-action-bar",
|
|
20
|
+
"description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Slots:**\n - _default_ - The default slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--example** - An example CSS custom property. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
|
|
21
|
+
"doc-url": "",
|
|
22
|
+
"attributes": [],
|
|
23
|
+
"slots": [
|
|
24
|
+
{ "name": "", "description": "The default slot." },
|
|
25
|
+
{ "name": "example", "description": "An example slot." }
|
|
26
|
+
],
|
|
27
|
+
"events": [
|
|
28
|
+
{ "name": "zn-event-name", "description": "Emitted as an example." }
|
|
29
|
+
],
|
|
30
|
+
"js": {
|
|
31
|
+
"properties": [],
|
|
32
|
+
"events": [
|
|
33
|
+
{
|
|
34
|
+
"name": "zn-event-name",
|
|
35
|
+
"description": "Emitted as an example."
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
},
|
|
18
40
|
{
|
|
19
41
|
"name": "zn-alert",
|
|
20
42
|
"description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Slots:**\n - _default_ - The default slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--example** - An example CSS custom property. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
|
|
@@ -83,28 +105,6 @@
|
|
|
83
105
|
]
|
|
84
106
|
}
|
|
85
107
|
},
|
|
86
|
-
{
|
|
87
|
-
"name": "zn-action-bar",
|
|
88
|
-
"description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Slots:**\n - _default_ - The default slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--example** - An example CSS custom property. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
|
|
89
|
-
"doc-url": "",
|
|
90
|
-
"attributes": [],
|
|
91
|
-
"slots": [
|
|
92
|
-
{ "name": "", "description": "The default slot." },
|
|
93
|
-
{ "name": "example", "description": "An example slot." }
|
|
94
|
-
],
|
|
95
|
-
"events": [
|
|
96
|
-
{ "name": "zn-event-name", "description": "Emitted as an example." }
|
|
97
|
-
],
|
|
98
|
-
"js": {
|
|
99
|
-
"properties": [],
|
|
100
|
-
"events": [
|
|
101
|
-
{
|
|
102
|
-
"name": "zn-event-name",
|
|
103
|
-
"description": "Emitted as an example."
|
|
104
|
-
}
|
|
105
|
-
]
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
108
|
{
|
|
109
109
|
"name": "zn-animated-button",
|
|
110
110
|
"description": "\n---\n\n\n### **Methods:**\n - **purchase(): _void_** - Programmatically trigger the purchase flow\n- **setSuccess(): _void_** - Set the button to success state manually\n- **setFailure(message): _void_** - Set the button to failure state manually with optional error message\n- **reset(): _void_** - Reset the button to idle state",
|
package/dist/zn.d.ts
CHANGED
|
@@ -4759,6 +4759,7 @@ declare module "components/icon-picker/icon-picker.component" {
|
|
|
4759
4759
|
private handleFreeInput;
|
|
4760
4760
|
private handleClear;
|
|
4761
4761
|
private _handleTriggerClick;
|
|
4762
|
+
private _handleTriggerKeyDown;
|
|
4762
4763
|
render(): import("lit-html").TemplateResult<1>;
|
|
4763
4764
|
}
|
|
4764
4765
|
}
|
package/dist/zn.min.js
CHANGED
|
@@ -1658,7 +1658,7 @@ import{a as En,b as c_,c as pr,d as c,e as B}from"./chunks/zn.UBLZO6CI.js";var Z
|
|
|
1658
1658
|
</div>
|
|
1659
1659
|
</div>
|
|
1660
1660
|
</div>
|
|
1661
|
-
`}};Ce.styles=[jo.styles,E(wv)],Ce.dependencies={"zn-button":Ct,"zn-copy-button":$h,"zn-expanding-action":Xh,"zn-icon":ct,"zn-navbar":aa,"zn-tab":Qh},c([p()],Ce.prototype,"caption",2),c([p({attribute:"entity-id"})],Ce.prototype,"entityId",2),c([p({attribute:"entity-id-show",type:Boolean})],Ce.prototype,"entityIdShow",2),c([p({attribute:"full-location"})],Ce.prototype,"fullLocation",2),c([p({type:Boolean,reflect:!0})],Ce.prototype,"modal",2),c([p({type:Boolean,reflect:!0})],Ce.prototype,"nested",2),c([p({type:Boolean,reflect:!0})],Ce.prototype,"primary",2),c([p({attribute:"previous-path"})],Ce.prototype,"previousPath",2),c([p({attribute:"previous-target"})],Ce.prototype,"previousTarget",2),c([p()],Ce.prototype,"summary",2),c([O()],Ce.prototype,"scrolled",2),c([O()],Ce.prototype,"tabDefinitions",2),c([O()],Ce.prototype,"hasExpandingActions",2);var z3=Ce;Ce.define("zn-page");var _v=S`@keyframes rotate-gradient{from{--rotate:0deg}to{--rotate:360deg}}:host{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-transform:none}:host *,:host *::before,:host *::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:rgb(var(--zn-border-color))}[hidden]{display:none !important}.width-container,.form-container,.wide-form-container{height:100%;width:100%;margin:var(--zn-default-margin,0 auto)}.width-container{max-width:var(--zn-container)}.form-container{max-width:var(--zn-container-ph)}.wide-form-container{max-width:var(--zn-container-lg)}.form-control-input{margin:var(--zn-spacing-2x-small) 3px 3px 0}.form-control-input--flush{margin:0}.form-control .form-control__label{display:none}.form-control .form-control__help-text{display:none}.form-control--has-label .form-control__label{display:inline-block;color:var(--zn-input-label-color);font-weight:var(--zn-input-label-font-weight);line-height:var(--zn-input-label-line-height);margin-bottom:var(--zn-spacing-x-small)}.form-control--has-label.form-control--medium .form-control__label{font-size:var(--zn-input-label-font-size-medium)}.form-control--has-label.form-control--large .form-control__label{font-size:var(--zn-input-label-font-size-large)}:host([required]) .form-control--has-label .form-control__label::after{content:var(--zn-input-required-content);margin-inline-start:var(--zn-input-required-content-offset);color:var(--zn-input-required-content-color)}.form-control--has-label.form-control--radio-group .form-control__label,.form-control--has-label.form-control--checkbox-group .form-control__label{margin-bottom:0}.form-control--has-label.form-control--has-label-tooltip .form-control__label{display:inline-flex;align-items:center;gap:var(--zn-spacing-2x-small)}.form-control--has-label.form-control--small .form-control__label{font-size:var(--zn-input-label-font-size-small)}.form-control--label-tooltip{color:var(--zn-color-neutral-700);font-size:var(--zn-font-size-small)}.form-control--label-tooltip zn-icon{--icon-color:var(--zn-color-neutral-700);--icon-size:var(--zn-font-size-small)}.form-control--has-label.form-control--has-context-note{display:flex;justify-content:space-between;flex-wrap:wrap}.form-control__label-context-note{color:var(--zn-input-help-text-color);font-size:var(--zn-font-size-small);margin-bottom:var(--zn-spacing-2x-small)}.form-control--has-label.form-control--has-context-note .form-control-input{width:100%}.form-control--has-help-text .form-control__help-text,.radio--has-description .radio__description,.checkbox--has-description .checkbox__description{display:block;color:var(--zn-input-help-text-color);margin-top:var(--zn-spacing-x-small)}.radio--has-description .radio__description,.checkbox--has-description .checkbox__description{margin-top:0.375rem}.radio--has-selected-content .radio__selected-content,.checkbox--has-selected-content .checkbox__selected-content{display:block;margin-top:var(--zn-spacing-small)}.form-control--has-help-text.form-control--small .form-control__help-text{font-size:var(--zn-input-help-text-font-size-small)}.form-control--has-help-text.form-control--medium .form-control__help-text,.radio--has-description .radio__description,.checkbox--has-description .checkbox__description{font-size:var(--zn-input-help-text-font-size-medium)}.form-control--has-help-text.form-control--large .form-control__help-text{font-size:var(--zn-input-help-text-font-size-large)}.form-control--has-help-text.form-control--radio-group .form-control__help-text,.form-control--has-help-text.form-control--checkbox-group .form-control__help-text{margin-top:var(--zn-spacing-medium)}.form-control--has-help-text .switch .form-control__help-text{margin-top:var(--zn-spacing-3x-small)}.form-control--checkbox-contained-wrapper{height:100%}:host{display:block}.form-control-input{display:flex;align-items:center;gap:var(--zn-spacing-x-small)}zn-dialog{--width:min(80vw,900px);--icon-color:rgb(var(--zn-text))}.icon-picker__dialog-layout{display:flex;gap:var(--zn-spacing-large);height:40vh}.icon-picker__dialog-main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.icon-picker__dialog-sidebar{width:180px;flex-shrink:0}@media (max-width:640px){zn-dialog{--width:100vw}zn-dialog::part(base){max-width:100%;max-height:100%;margin:0;border-radius:0;height:100dvh;width:100vw}.icon-picker__dialog-layout{height:calc(100dvh - 8rem);flex-direction:column}.icon-picker__dialog-sidebar{width:100%;flex-shrink:0}}.icon-picker__mode-switch{display:flex;gap:var(--zn-spacing-x-small);margin-bottom:var(--zn-spacing-small)}.icon-picker__upload{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--zn-spacing-small);border:dashed 1px rgb(var(--zn-border-color));border-radius:var(--zn-border-radius);padding:var(--zn-spacing-large);color:rgb(var(--zn-text-muted))}.icon-picker__upload-preview{max-width:100%;max-height:160px;-o-object-fit:contain;object-fit:contain;border-radius:var(--zn-border-radius)}.icon-picker__upload-filename{font-size:var(--zn-font-size-small);color:rgb(var(--zn-text-muted));word-break:break-all}.icon-picker__dialog-controls{display:flex;gap:var(--zn-spacing-small);margin-bottom:var(--zn-spacing-small)}.icon-picker__library-select{flex:1;min-width:0}.icon-picker__color-input{width:140px;flex-shrink:0}.icon-picker__icon-input{margin-bottom:var(--zn-spacing-small)}.icon-picker__search{margin-bottom:var(--zn-spacing-small)}.icon-picker__free-input{margin-bottom:var(--zn-spacing-small)}.icon-picker__grid{display:flex;flex-wrap:wrap;gap:var(--zn-spacing-x-small);flex:1;overflow-y:auto;align-content:flex-start;border:solid 1px rgb(var(--zn-border-color));border-radius:var(--zn-border-radius);padding:var(--zn-spacing-x-small)}.icon-picker__grid-item{display:flex;align-items:center;justify-content:center;width:48px;height:48px;padding:0;border:2px solid transparent;border-radius:var(--zn-border-radius);background:transparent;color:var(--zn-text-color);cursor:pointer;transition:var(--zn-transition-fast) background-color,var(--zn-transition-fast) border-color}.icon-picker__grid-item:hover{background-color:rgba(var(--zn-color-primary),0.1)}.icon-picker__grid-item--selected{border-color:rgb(var(--zn-color-primary));background-color:rgba(var(--zn-color-primary),0.1)}.icon-picker__no-results{width:100%;text-align:center;padding:var(--zn-spacing-large);color:rgb(var(--zn-text-muted))}.icon-picker__preview{display:flex;flex-direction:column;align-items:center;gap:var(--zn-spacing-small);padding:var(--zn-spacing-medium);background-color:rgba(var(--zn-panel-secondary),0.5);border-radius:var(--zn-border-radius);text-align:center}.icon-picker__preview--empty{color:rgb(var(--zn-text-muted))}.icon-picker__preview-name{font-size:var(--zn-font-size-medium);font-family:var(--zn-font-mono);word-break:break-all}.icon-picker__preview-library{font-size:var(--zn-font-size-small);color:rgb(var(--zn-text-muted))}.icon-picker__preview-hint{font-size:var(--zn-font-size-small);color:rgb(var(--zn-text-muted))}`;var zt=class zt extends C{constructor(){super(...arguments);this.formControlController=new ot(this,{assumeInteractionOn:["zn-change"],value:t=>t._file??t.icon});this.name="";this.icon="";this.label="";this.library="material-symbols-outlined";this.color="";this.noColor=!1;this.noLibrary=!1;this.helpText="";this.disabled=!1;this.required=!1;this.triggerSubmit=!1;this.allowUpload=!1;this.accept="image/*";this.defaultValue="";this._dialogOpen=!1;this._searchQuery="";this._iconList=[];this._filteredIcons=[];this._pendingIcon="";this._pendingLibrary="";this._pendingColor="";this._pendingFile=null;this._pendingFileUrl=null;this._mode="icon";this._file=null;this._fileUrl=null}get value(){return this.icon}set value(t){this.icon=t}get file(){return this._file}get isImageValue(){return!!this._file||this.icon.includes("/")}get validity(){return this.required&&!this.icon&&!this._file?{valid:!1,valueMissing:!0,badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1}:{valid:!0,valueMissing:!1,badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1}}get validationMessage(){return this.required&&!this.icon&&!this._file?"Please select an icon.":""}checkValidity(){return this.validity.valid}getForm(){return this.formControlController.getForm()}reportValidity(){return this.checkValidity()}setCustomValidity(t){this.formControlController.updateValidity()}isFreeInputLibrary(t){return zt.freeInputLibraries.has(t)}async getIconsForLibrary(t){try{switch(t){case"brands":return(await import("./chunks/zn.CU5HCKLN.js")).brandIcons;case"line":return(await import("./chunks/zn.7VCR5ZZL.js")).lineIcons;default:{let r=await import("./chunks/zn.NKUIXDNI.js");switch(t){case"material-outlined":return r.material_outlinedIcons;case"material-round":return r.material_roundIcons;case"material-sharp":return r.material_sharpIcons;case"material-two-tone":return r.material_two_toneIcons;case"material-symbols-outlined":return r.material_symbols_outlinedIcons;default:return r.materialIcons}}}}catch{return[]}}async openDialog(){this._pendingIcon=this.isImageValue?"":this.icon,this._pendingLibrary=this.library,this._pendingColor=this.color,this._searchQuery="",this._mode=this.allowUpload&&this.isImageValue?"upload":"icon",this._iconList=await this.getIconsForLibrary(this.library),this._filteredIcons=this._iconList.slice(0,200),this._dialogOpen=!0,await this.updateComplete,this._dialog.show()}closeDialog(){this.discardPendingFile(),this._dialog.hide(),this._dialogOpen=!1}handleConfirm(){this._mode==="upload"?this._pendingFile&&(this._fileUrl&&URL.revokeObjectURL(this._fileUrl),this._file=this._pendingFile,this._fileUrl=this._pendingFileUrl,this._pendingFile=null,this._pendingFileUrl=null,this.icon=""):(this.icon=this._pendingIcon,this.library=this._pendingLibrary,this.color=this._pendingColor,this.clearFile()),this.closeDialog(),this.emit("zn-change"),this.triggerSubmit&&this.formControlController.submit()}handleCancel(){this.closeDialog()}handleFileSelect(t){let r=t.target,n=r.files?.[0]??null;n&&(this.discardPendingFile(),this._pendingFile=n,this._pendingFileUrl=URL.createObjectURL(n),r.value="")}discardPendingFile(){this._pendingFileUrl&&URL.revokeObjectURL(this._pendingFileUrl),this._pendingFile=null,this._pendingFileUrl=null}clearFile(){this._fileUrl&&URL.revokeObjectURL(this._fileUrl),this._file=null,this._fileUrl=null}disconnectedCallback(){super.disconnectedCallback(),this.discardPendingFile(),this._fileUrl&&URL.revokeObjectURL(this._fileUrl)}handleSearchInput(t){let r=t.target;this._searchQuery=r.value.toLowerCase(),this.filterIcons()}filterIcons(){this._searchQuery?this._filteredIcons=this._iconList.filter(t=>t.includes(this._searchQuery)).slice(0,200):this._filteredIcons=this._iconList.slice(0,200)}handleIconSelect(t){this._pendingIcon=t}async handleLibraryChange(t){let r=t.target,n=this.isFreeInputLibrary(this._pendingLibrary);this._pendingLibrary=r.value;let a=this.isFreeInputLibrary(this._pendingLibrary);n!==a&&(this._pendingIcon=""),a||(this._iconList=await this.getIconsForLibrary(this._pendingLibrary),this.filterIcons())}handleColorInput(t){let r=t.target;this._pendingColor=r.value}handleFreeInput(t){let r=t.target;this._pendingIcon=r.value}handleClear(t){t.stopPropagation(),this.icon="",this.color="",this.clearFile(),this.emit("zn-change"),this.triggerSubmit&&this.formControlController.submit()}_handleTriggerClick(){this.disabled||this.openDialog()}render(){let t=!!this.label,r=!!this.helpText,n=!!this.icon||!!this._file,a=this._fileUrl??this.icon,s=n&&!this.isImageValue?this.library:V,l=this._pendingFileUrl??(this.isImageValue&&!this._file?this.icon:this._fileUrl);return u`
|
|
1661
|
+
`}};Ce.styles=[jo.styles,E(wv)],Ce.dependencies={"zn-button":Ct,"zn-copy-button":$h,"zn-expanding-action":Xh,"zn-icon":ct,"zn-navbar":aa,"zn-tab":Qh},c([p()],Ce.prototype,"caption",2),c([p({attribute:"entity-id"})],Ce.prototype,"entityId",2),c([p({attribute:"entity-id-show",type:Boolean})],Ce.prototype,"entityIdShow",2),c([p({attribute:"full-location"})],Ce.prototype,"fullLocation",2),c([p({type:Boolean,reflect:!0})],Ce.prototype,"modal",2),c([p({type:Boolean,reflect:!0})],Ce.prototype,"nested",2),c([p({type:Boolean,reflect:!0})],Ce.prototype,"primary",2),c([p({attribute:"previous-path"})],Ce.prototype,"previousPath",2),c([p({attribute:"previous-target"})],Ce.prototype,"previousTarget",2),c([p()],Ce.prototype,"summary",2),c([O()],Ce.prototype,"scrolled",2),c([O()],Ce.prototype,"tabDefinitions",2),c([O()],Ce.prototype,"hasExpandingActions",2);var z3=Ce;Ce.define("zn-page");var _v=S`@keyframes rotate-gradient{from{--rotate:0deg}to{--rotate:360deg}}:host{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-transform:none}:host *,:host *::before,:host *::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:rgb(var(--zn-border-color))}[hidden]{display:none !important}.width-container,.form-container,.wide-form-container{height:100%;width:100%;margin:var(--zn-default-margin,0 auto)}.width-container{max-width:var(--zn-container)}.form-container{max-width:var(--zn-container-ph)}.wide-form-container{max-width:var(--zn-container-lg)}.form-control-input{margin:var(--zn-spacing-2x-small) 3px 3px 0}.form-control-input--flush{margin:0}.form-control .form-control__label{display:none}.form-control .form-control__help-text{display:none}.form-control--has-label .form-control__label{display:inline-block;color:var(--zn-input-label-color);font-weight:var(--zn-input-label-font-weight);line-height:var(--zn-input-label-line-height);margin-bottom:var(--zn-spacing-x-small)}.form-control--has-label.form-control--medium .form-control__label{font-size:var(--zn-input-label-font-size-medium)}.form-control--has-label.form-control--large .form-control__label{font-size:var(--zn-input-label-font-size-large)}:host([required]) .form-control--has-label .form-control__label::after{content:var(--zn-input-required-content);margin-inline-start:var(--zn-input-required-content-offset);color:var(--zn-input-required-content-color)}.form-control--has-label.form-control--radio-group .form-control__label,.form-control--has-label.form-control--checkbox-group .form-control__label{margin-bottom:0}.form-control--has-label.form-control--has-label-tooltip .form-control__label{display:inline-flex;align-items:center;gap:var(--zn-spacing-2x-small)}.form-control--has-label.form-control--small .form-control__label{font-size:var(--zn-input-label-font-size-small)}.form-control--label-tooltip{color:var(--zn-color-neutral-700);font-size:var(--zn-font-size-small)}.form-control--label-tooltip zn-icon{--icon-color:var(--zn-color-neutral-700);--icon-size:var(--zn-font-size-small)}.form-control--has-label.form-control--has-context-note{display:flex;justify-content:space-between;flex-wrap:wrap}.form-control__label-context-note{color:var(--zn-input-help-text-color);font-size:var(--zn-font-size-small);margin-bottom:var(--zn-spacing-2x-small)}.form-control--has-label.form-control--has-context-note .form-control-input{width:100%}.form-control--has-help-text .form-control__help-text,.radio--has-description .radio__description,.checkbox--has-description .checkbox__description{display:block;color:var(--zn-input-help-text-color);margin-top:var(--zn-spacing-x-small)}.radio--has-description .radio__description,.checkbox--has-description .checkbox__description{margin-top:0.375rem}.radio--has-selected-content .radio__selected-content,.checkbox--has-selected-content .checkbox__selected-content{display:block;margin-top:var(--zn-spacing-small)}.form-control--has-help-text.form-control--small .form-control__help-text{font-size:var(--zn-input-help-text-font-size-small)}.form-control--has-help-text.form-control--medium .form-control__help-text,.radio--has-description .radio__description,.checkbox--has-description .checkbox__description{font-size:var(--zn-input-help-text-font-size-medium)}.form-control--has-help-text.form-control--large .form-control__help-text{font-size:var(--zn-input-help-text-font-size-large)}.form-control--has-help-text.form-control--radio-group .form-control__help-text,.form-control--has-help-text.form-control--checkbox-group .form-control__help-text{margin-top:var(--zn-spacing-medium)}.form-control--has-help-text .switch .form-control__help-text{margin-top:var(--zn-spacing-3x-small)}.form-control--checkbox-contained-wrapper{height:100%}:host{display:block}.form-control-input{display:flex;align-items:center;gap:var(--zn-spacing-x-small)}zn-dialog{--width:min(80vw,900px);--icon-color:rgb(var(--zn-text))}.icon-picker__image-trigger{position:relative;flex:1;min-width:0;min-height:180px;border:1px solid var(--zn-input-border-color);border-radius:var(--zn-border-radius);cursor:pointer;transition:var(--zn-transition-medium) background,var(--zn-transition-medium) border-color}.icon-picker__image-trigger:focus-visible{border-color:var(--zn-color-primary-600);outline:var(--zn-focus-ring);outline-offset:var(--zn-focus-ring-offset)}.icon-picker__image-trigger:not(:focus-visible):hover{border-color:var(--zn-color-primary-700)}:host([disabled]) .icon-picker__image-trigger{cursor:not-allowed;opacity:0.5}.icon-picker__image-trigger-background{--zn-droparea-checker-size:12px;--zn-droparea-checker-a:var(--zn-color-neutral-50);--zn-droparea-checker-b:var(--zn-color-neutral-100);display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:inherit;padding:var(--zn-spacing-large) var(--zn-spacing-medium);box-sizing:border-box;background-color:var(--zn-droparea-checker-a);background-image:linear-gradient(45deg,var(--zn-droparea-checker-b) 25%,transparent 25%),linear-gradient(-45deg,var(--zn-droparea-checker-b) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--zn-droparea-checker-b) 75%),linear-gradient(-45deg,transparent 75%,var(--zn-droparea-checker-b) 75%);background-size:var(--zn-droparea-checker-size) var(--zn-droparea-checker-size);background-position:0 0,0 calc(var(--zn-droparea-checker-size) / 2),calc(var(--zn-droparea-checker-size) / 2) calc(var(--zn-droparea-checker-size) / -2),calc(var(--zn-droparea-checker-size) / -2) 0;border-radius:calc(var(--zn-border-radius) - 1px)}.icon-picker__image-trigger-preview{display:block;width:100%;height:150px;-o-object-fit:contain;object-fit:contain}.icon-picker__image-clear{position:absolute;top:var(--zn-spacing-small);right:var(--zn-spacing-small);z-index:1}.icon-picker__dialog-layout{display:flex;gap:var(--zn-spacing-large);height:40vh}.icon-picker__dialog-main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.icon-picker__dialog-sidebar{width:180px;flex-shrink:0}@media (max-width:640px){zn-dialog{--width:100vw}zn-dialog::part(base){max-width:100%;max-height:100%;margin:0;border-radius:0;height:100dvh;width:100vw}.icon-picker__dialog-layout{height:calc(100dvh - 8rem);flex-direction:column}.icon-picker__dialog-sidebar{width:100%;flex-shrink:0}}.icon-picker__mode-switch{display:flex;gap:var(--zn-spacing-x-small);margin-bottom:var(--zn-spacing-small)}.icon-picker__upload{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--zn-spacing-small);border:dashed 1px rgb(var(--zn-border-color));border-radius:var(--zn-border-radius);padding:var(--zn-spacing-large);color:rgb(var(--zn-text-muted))}.icon-picker__upload-preview{max-width:100%;max-height:160px;-o-object-fit:contain;object-fit:contain;border-radius:var(--zn-border-radius)}.icon-picker__upload-filename{font-size:var(--zn-font-size-small);color:rgb(var(--zn-text-muted));word-break:break-all}.icon-picker__dialog-controls{display:flex;gap:var(--zn-spacing-small);margin-bottom:var(--zn-spacing-small)}.icon-picker__library-select{flex:1;min-width:0}.icon-picker__color-input{width:140px;flex-shrink:0}.icon-picker__icon-input{margin-bottom:var(--zn-spacing-small)}.icon-picker__search{margin-bottom:var(--zn-spacing-small)}.icon-picker__free-input{margin-bottom:var(--zn-spacing-small)}.icon-picker__grid{display:flex;flex-wrap:wrap;gap:var(--zn-spacing-x-small);flex:1;overflow-y:auto;align-content:flex-start;border:solid 1px rgb(var(--zn-border-color));border-radius:var(--zn-border-radius);padding:var(--zn-spacing-x-small)}.icon-picker__grid-item{display:flex;align-items:center;justify-content:center;width:48px;height:48px;padding:0;border:2px solid transparent;border-radius:var(--zn-border-radius);background:transparent;color:var(--zn-text-color);cursor:pointer;transition:var(--zn-transition-fast) background-color,var(--zn-transition-fast) border-color}.icon-picker__grid-item:hover{background-color:rgba(var(--zn-color-primary),0.1)}.icon-picker__grid-item--selected{border-color:rgb(var(--zn-color-primary));background-color:rgba(var(--zn-color-primary),0.1)}.icon-picker__no-results{width:100%;text-align:center;padding:var(--zn-spacing-large);color:rgb(var(--zn-text-muted))}.icon-picker__preview{display:flex;flex-direction:column;align-items:center;gap:var(--zn-spacing-small);padding:var(--zn-spacing-medium);background-color:rgba(var(--zn-panel-secondary),0.5);border-radius:var(--zn-border-radius);text-align:center}.icon-picker__preview--empty{color:rgb(var(--zn-text-muted))}.icon-picker__preview-name{font-size:var(--zn-font-size-medium);font-family:var(--zn-font-mono);word-break:break-all}.icon-picker__preview-library{font-size:var(--zn-font-size-small);color:rgb(var(--zn-text-muted))}.icon-picker__preview-hint{font-size:var(--zn-font-size-small);color:rgb(var(--zn-text-muted))}.icon-picker__footer{display:flex;justify-content:flex-end;align-items:center;gap:var(--zn-spacing-small);--icon-color:currentColor}`;var zt=class zt extends C{constructor(){super(...arguments);this.formControlController=new ot(this,{assumeInteractionOn:["zn-change"],value:t=>t._file??t.icon});this.name="";this.icon="";this.label="";this.library="material-symbols-outlined";this.color="";this.noColor=!1;this.noLibrary=!1;this.helpText="";this.disabled=!1;this.required=!1;this.triggerSubmit=!1;this.allowUpload=!1;this.accept="image/*";this.defaultValue="";this._dialogOpen=!1;this._searchQuery="";this._iconList=[];this._filteredIcons=[];this._pendingIcon="";this._pendingLibrary="";this._pendingColor="";this._pendingFile=null;this._pendingFileUrl=null;this._mode="icon";this._file=null;this._fileUrl=null}get value(){return this.icon}set value(t){this.icon=t}get file(){return this._file}get isImageValue(){return!!this._file||this.icon.includes("/")}get validity(){return this.required&&!this.icon&&!this._file?{valid:!1,valueMissing:!0,badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1}:{valid:!0,valueMissing:!1,badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1}}get validationMessage(){return this.required&&!this.icon&&!this._file?"Please select an icon.":""}checkValidity(){return this.validity.valid}getForm(){return this.formControlController.getForm()}reportValidity(){return this.checkValidity()}setCustomValidity(t){this.formControlController.updateValidity()}isFreeInputLibrary(t){return zt.freeInputLibraries.has(t)}async getIconsForLibrary(t){try{switch(t){case"brands":return(await import("./chunks/zn.CU5HCKLN.js")).brandIcons;case"line":return(await import("./chunks/zn.7VCR5ZZL.js")).lineIcons;default:{let r=await import("./chunks/zn.NKUIXDNI.js");switch(t){case"material-outlined":return r.material_outlinedIcons;case"material-round":return r.material_roundIcons;case"material-sharp":return r.material_sharpIcons;case"material-two-tone":return r.material_two_toneIcons;case"material-symbols-outlined":return r.material_symbols_outlinedIcons;default:return r.materialIcons}}}}catch{return[]}}async openDialog(){this._pendingIcon=this.isImageValue?"":this.icon,this._pendingLibrary=this.library,this._pendingColor=this.color,this._searchQuery="",this._mode=this.allowUpload&&this.isImageValue?"upload":"icon",this._iconList=await this.getIconsForLibrary(this.library),this._filteredIcons=this._iconList.slice(0,200),this._dialogOpen=!0,await this.updateComplete,this._dialog.show()}closeDialog(){this.discardPendingFile(),this._dialog.hide(),this._dialogOpen=!1}handleConfirm(){this._mode==="upload"?this._pendingFile&&(this._fileUrl&&URL.revokeObjectURL(this._fileUrl),this._file=this._pendingFile,this._fileUrl=this._pendingFileUrl,this._pendingFile=null,this._pendingFileUrl=null,this.icon=""):(this.icon=this._pendingIcon,this.library=this._pendingLibrary,this.color=this._pendingColor,this.clearFile()),this.closeDialog(),this.emit("zn-change"),this.triggerSubmit&&this.formControlController.submit()}handleCancel(){this.closeDialog()}handleFileSelect(t){let r=t.target,n=r.files?.[0]??null;n&&(this.discardPendingFile(),this._pendingFile=n,this._pendingFileUrl=URL.createObjectURL(n),r.value="")}discardPendingFile(){this._pendingFileUrl&&URL.revokeObjectURL(this._pendingFileUrl),this._pendingFile=null,this._pendingFileUrl=null}clearFile(){this._fileUrl&&URL.revokeObjectURL(this._fileUrl),this._file=null,this._fileUrl=null}disconnectedCallback(){super.disconnectedCallback(),this.discardPendingFile(),this._fileUrl&&URL.revokeObjectURL(this._fileUrl)}handleSearchInput(t){let r=t.target;this._searchQuery=r.value.toLowerCase(),this.filterIcons()}filterIcons(){this._searchQuery?this._filteredIcons=this._iconList.filter(t=>t.includes(this._searchQuery)).slice(0,200):this._filteredIcons=this._iconList.slice(0,200)}handleIconSelect(t){this._pendingIcon=t}async handleLibraryChange(t){let r=t.target,n=this.isFreeInputLibrary(this._pendingLibrary);this._pendingLibrary=r.value;let a=this.isFreeInputLibrary(this._pendingLibrary);n!==a&&(this._pendingIcon=""),a||(this._iconList=await this.getIconsForLibrary(this._pendingLibrary),this.filterIcons())}handleColorInput(t){let r=t.target;this._pendingColor=r.value}handleFreeInput(t){let r=t.target;this._pendingIcon=r.value}handleClear(t){t.stopPropagation(),this.icon="",this.color="",this.clearFile(),this.emit("zn-change"),this.triggerSubmit&&this.formControlController.submit()}_handleTriggerClick(){this.disabled||this.openDialog()}_handleTriggerKeyDown(t){(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),this._handleTriggerClick())}render(){let t=!!this.label,r=!!this.helpText,n=!!this.icon||!!this._file,a=this._fileUrl??this.icon,s=n&&!this.isImageValue?this.library:V,l=this._pendingFileUrl??(this.isImageValue&&!this._file?this.icon:this._fileUrl);return u`
|
|
1662
1662
|
<div part="form-control"
|
|
1663
1663
|
class="form-control ${t?"form-control--has-label":""} ${r?"form-control--has-help-text":""}">
|
|
1664
1664
|
|
|
@@ -1668,27 +1668,51 @@ import{a as En,b as c_,c as pr,d as c,e as B}from"./chunks/zn.UBLZO6CI.js";var Z
|
|
|
1668
1668
|
</label>
|
|
1669
1669
|
|
|
1670
1670
|
<div part="form-control-input" class="form-control-input">
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1671
|
+
${n&&this.isImageValue?u`
|
|
1672
|
+
<div
|
|
1673
|
+
part="trigger"
|
|
1674
|
+
class="icon-picker__image-trigger"
|
|
1675
|
+
role="button"
|
|
1676
|
+
aria-label="Click to edit"
|
|
1677
|
+
tabindex=${this.disabled?"-1":"0"}
|
|
1678
|
+
@click=${this._handleTriggerClick}
|
|
1679
|
+
@keydown=${this._handleTriggerKeyDown}>
|
|
1680
|
+
<zn-button
|
|
1681
|
+
class="icon-picker__image-clear"
|
|
1682
|
+
color="default"
|
|
1683
|
+
outline
|
|
1684
|
+
icon="close"
|
|
1685
|
+
icon-size="18"
|
|
1686
|
+
?disabled=${this.disabled}
|
|
1687
|
+
@click="${this.handleClear}"
|
|
1688
|
+
></zn-button>
|
|
1689
|
+
<div class="icon-picker__image-trigger-background">
|
|
1690
|
+
<img class="icon-picker__image-trigger-preview" src=${a} alt="">
|
|
1691
|
+
</div>
|
|
1692
|
+
</div>
|
|
1693
|
+
`:u`
|
|
1684
1694
|
<zn-button
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
icon
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1695
|
+
part="trigger"
|
|
1696
|
+
class="icon-picker__trigger"
|
|
1697
|
+
panel-bg
|
|
1698
|
+
icon=${n?a:V}
|
|
1699
|
+
icon-library=${s}
|
|
1700
|
+
icon-color=${n&&this.color||V}
|
|
1701
|
+
icon-size="24"
|
|
1702
|
+
?disabled=${this.disabled}
|
|
1703
|
+
@click=${this._handleTriggerClick}>
|
|
1704
|
+
${n?"Click to edit":"Set an icon"}
|
|
1705
|
+
</zn-button>
|
|
1706
|
+
${n?u`
|
|
1707
|
+
<zn-button
|
|
1708
|
+
class="icon-picker__clear"
|
|
1709
|
+
color="transparent"
|
|
1710
|
+
icon="close"
|
|
1711
|
+
icon-size="16"
|
|
1712
|
+
@click="${this.handleClear}"
|
|
1713
|
+
></zn-button>
|
|
1714
|
+
`:V}
|
|
1715
|
+
`}
|
|
1692
1716
|
</div>
|
|
1693
1717
|
|
|
1694
1718
|
${this.name?u`
|
|
@@ -1853,11 +1877,11 @@ import{a as En,b as c_,c as pr,d as c,e as B}from"./chunks/zn.UBLZO6CI.js";var Z
|
|
|
1853
1877
|
</div>
|
|
1854
1878
|
</div>
|
|
1855
1879
|
|
|
1856
|
-
<div slot="footer">
|
|
1857
|
-
<zn-button
|
|
1858
|
-
<zn-button color="primary" @click=${this.handleConfirm}
|
|
1880
|
+
<div slot="footer" class="icon-picker__footer">
|
|
1881
|
+
<zn-button panel-bg icon="close" @click=${this.handleCancel}>Cancel</zn-button>
|
|
1882
|
+
<zn-button color="primary" icon="check" @click=${this.handleConfirm}
|
|
1859
1883
|
?disabled=${this._mode==="upload"?!this._pendingFile&&!this.isImageValue:!this._pendingIcon}>
|
|
1860
|
-
|
|
1884
|
+
Save
|
|
1861
1885
|
</zn-button>
|
|
1862
1886
|
</div>
|
|
1863
1887
|
</zn-dialog>
|
package/package.json
CHANGED
|
@@ -300,6 +300,13 @@ export default class ZnIconPicker extends ZincElement implements ZincFormControl
|
|
|
300
300
|
this.openDialog();
|
|
301
301
|
}
|
|
302
302
|
|
|
303
|
+
private _handleTriggerKeyDown(e: KeyboardEvent) {
|
|
304
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
305
|
+
e.preventDefault();
|
|
306
|
+
this._handleTriggerClick();
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
303
310
|
render() {
|
|
304
311
|
const hasLabel = !!this.label;
|
|
305
312
|
const hasHelpText = !!this.helpText;
|
|
@@ -320,27 +327,51 @@ export default class ZnIconPicker extends ZincElement implements ZincFormControl
|
|
|
320
327
|
</label>
|
|
321
328
|
|
|
322
329
|
<div part="form-control-input" class="form-control-input">
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
330
|
+
${hasValue && this.isImageValue ? html`
|
|
331
|
+
<div
|
|
332
|
+
part="trigger"
|
|
333
|
+
class="icon-picker__image-trigger"
|
|
334
|
+
role="button"
|
|
335
|
+
aria-label="Click to edit"
|
|
336
|
+
tabindex=${this.disabled ? '-1' : '0'}
|
|
337
|
+
@click=${this._handleTriggerClick}
|
|
338
|
+
@keydown=${this._handleTriggerKeyDown}>
|
|
339
|
+
<zn-button
|
|
340
|
+
class="icon-picker__image-clear"
|
|
341
|
+
color="default"
|
|
342
|
+
outline
|
|
343
|
+
icon="close"
|
|
344
|
+
icon-size="18"
|
|
345
|
+
?disabled=${this.disabled}
|
|
346
|
+
@click="${this.handleClear}"
|
|
347
|
+
></zn-button>
|
|
348
|
+
<div class="icon-picker__image-trigger-background">
|
|
349
|
+
<img class="icon-picker__image-trigger-preview" src=${triggerIcon} alt="">
|
|
350
|
+
</div>
|
|
351
|
+
</div>
|
|
352
|
+
` : html`
|
|
336
353
|
<zn-button
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
icon
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
354
|
+
part="trigger"
|
|
355
|
+
class="icon-picker__trigger"
|
|
356
|
+
panel-bg
|
|
357
|
+
icon=${hasValue ? triggerIcon : nothing}
|
|
358
|
+
icon-library=${triggerLibrary}
|
|
359
|
+
icon-color=${(hasValue && this.color) || nothing}
|
|
360
|
+
icon-size="24"
|
|
361
|
+
?disabled=${this.disabled}
|
|
362
|
+
@click=${this._handleTriggerClick}>
|
|
363
|
+
${hasValue ? 'Click to edit' : 'Set an icon'}
|
|
364
|
+
</zn-button>
|
|
365
|
+
${hasValue ? html`
|
|
366
|
+
<zn-button
|
|
367
|
+
class="icon-picker__clear"
|
|
368
|
+
color="transparent"
|
|
369
|
+
icon="close"
|
|
370
|
+
icon-size="16"
|
|
371
|
+
@click="${this.handleClear}"
|
|
372
|
+
></zn-button>
|
|
373
|
+
` : nothing}
|
|
374
|
+
`}
|
|
344
375
|
</div>
|
|
345
376
|
|
|
346
377
|
${this.name ? html`
|
|
@@ -508,11 +539,11 @@ export default class ZnIconPicker extends ZincElement implements ZincFormControl
|
|
|
508
539
|
</div>
|
|
509
540
|
</div>
|
|
510
541
|
|
|
511
|
-
<div slot="footer">
|
|
512
|
-
<zn-button
|
|
513
|
-
<zn-button color="primary" @click=${this.handleConfirm}
|
|
542
|
+
<div slot="footer" class="icon-picker__footer">
|
|
543
|
+
<zn-button panel-bg icon="close" @click=${this.handleCancel}>Cancel</zn-button>
|
|
544
|
+
<zn-button color="primary" icon="check" @click=${this.handleConfirm}
|
|
514
545
|
?disabled=${this._mode === 'upload' ? !this._pendingFile && !this.isImageValue : !this._pendingIcon}>
|
|
515
|
-
|
|
546
|
+
Save
|
|
516
547
|
</zn-button>
|
|
517
548
|
</div>
|
|
518
549
|
</zn-dialog>
|
|
@@ -16,6 +16,77 @@ zn-dialog {
|
|
|
16
16
|
--icon-color: rgb(var(--zn-text));
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
// Mirrors zn-file's droparea preview so a chosen image reads the same as an
|
|
20
|
+
// uploaded file.
|
|
21
|
+
.icon-picker__image-trigger {
|
|
22
|
+
position: relative;
|
|
23
|
+
flex: 1;
|
|
24
|
+
min-width: 0;
|
|
25
|
+
min-height: 180px;
|
|
26
|
+
border: 1px solid var(--zn-input-border-color);
|
|
27
|
+
border-radius: var(--zn-border-radius);
|
|
28
|
+
cursor: pointer;
|
|
29
|
+
transition: var(--zn-transition-medium) background,
|
|
30
|
+
var(--zn-transition-medium) border-color;
|
|
31
|
+
|
|
32
|
+
&:focus-visible {
|
|
33
|
+
border-color: var(--zn-color-primary-600);
|
|
34
|
+
outline: var(--zn-focus-ring);
|
|
35
|
+
outline-offset: var(--zn-focus-ring-offset);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
&:not(:focus-visible):hover {
|
|
39
|
+
border-color: var(--zn-color-primary-700);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
:host([disabled]) .icon-picker__image-trigger {
|
|
44
|
+
cursor: not-allowed;
|
|
45
|
+
opacity: 0.5;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.icon-picker__image-trigger-background {
|
|
49
|
+
--zn-droparea-checker-size: 12px;
|
|
50
|
+
--zn-droparea-checker-a: var(--zn-color-neutral-50);
|
|
51
|
+
--zn-droparea-checker-b: var(--zn-color-neutral-100);
|
|
52
|
+
|
|
53
|
+
display: flex;
|
|
54
|
+
align-items: center;
|
|
55
|
+
justify-content: center;
|
|
56
|
+
width: 100%;
|
|
57
|
+
height: 100%;
|
|
58
|
+
min-height: inherit;
|
|
59
|
+
padding: var(--zn-spacing-large) var(--zn-spacing-medium);
|
|
60
|
+
box-sizing: border-box;
|
|
61
|
+
background-color: var(--zn-droparea-checker-a);
|
|
62
|
+
background-image:
|
|
63
|
+
linear-gradient(45deg, var(--zn-droparea-checker-b) 25%, transparent 25%),
|
|
64
|
+
linear-gradient(-45deg, var(--zn-droparea-checker-b) 25%, transparent 25%),
|
|
65
|
+
linear-gradient(45deg, transparent 75%, var(--zn-droparea-checker-b) 75%),
|
|
66
|
+
linear-gradient(-45deg, transparent 75%, var(--zn-droparea-checker-b) 75%);
|
|
67
|
+
background-size: var(--zn-droparea-checker-size) var(--zn-droparea-checker-size);
|
|
68
|
+
background-position:
|
|
69
|
+
0 0,
|
|
70
|
+
0 calc(var(--zn-droparea-checker-size) / 2),
|
|
71
|
+
calc(var(--zn-droparea-checker-size) / 2) calc(var(--zn-droparea-checker-size) / -2),
|
|
72
|
+
calc(var(--zn-droparea-checker-size) / -2) 0;
|
|
73
|
+
border-radius: calc(var(--zn-border-radius) - 1px);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.icon-picker__image-trigger-preview {
|
|
77
|
+
display: block;
|
|
78
|
+
width: 100%;
|
|
79
|
+
height: 150px;
|
|
80
|
+
object-fit: contain;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.icon-picker__image-clear {
|
|
84
|
+
position: absolute;
|
|
85
|
+
top: var(--zn-spacing-small);
|
|
86
|
+
right: var(--zn-spacing-small);
|
|
87
|
+
z-index: 1;
|
|
88
|
+
}
|
|
89
|
+
|
|
19
90
|
.icon-picker__dialog-layout {
|
|
20
91
|
display: flex;
|
|
21
92
|
gap: var(--zn-spacing-large);
|
|
@@ -195,3 +266,14 @@ zn-dialog {
|
|
|
195
266
|
color: rgb(var(--zn-text-muted));
|
|
196
267
|
}
|
|
197
268
|
|
|
269
|
+
// Mirrors the global .form-actions layout, which isn't available in the
|
|
270
|
+
// shadow DOM. currentColor undoes the dialog-wide --icon-color override so
|
|
271
|
+
// button icons match their button's text colour.
|
|
272
|
+
.icon-picker__footer {
|
|
273
|
+
display: flex;
|
|
274
|
+
justify-content: flex-end;
|
|
275
|
+
align-items: center;
|
|
276
|
+
gap: var(--zn-spacing-small);
|
|
277
|
+
--icon-color: currentColor;
|
|
278
|
+
}
|
|
279
|
+
|