@kubex/zinc 1.1.118 → 1.1.120

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.
@@ -16556,7 +16556,17 @@
16556
16556
  },
16557
16557
  "privacy": "private",
16558
16558
  "default": "null",
16559
- "description": "The scroller the label is tracked against by hand; null while native sticky is enough."
16559
+ "description": "The scroller the label is moved against by hand; null while native sticky is enough."
16560
+ },
16561
+ {
16562
+ "kind": "field",
16563
+ "name": "animation",
16564
+ "type": {
16565
+ "text": "Animation | null"
16566
+ },
16567
+ "privacy": "private",
16568
+ "default": "null",
16569
+ "description": "Set while the compositor is running the movement off a scroll timeline instead."
16560
16570
  },
16561
16571
  {
16562
16572
  "kind": "field",
@@ -16629,22 +16639,34 @@
16629
16639
  },
16630
16640
  {
16631
16641
  "kind": "method",
16632
- "name": "findScroller",
16642
+ "name": "bind",
16633
16643
  "privacy": "private",
16634
- "description": "Native sticky only follows the nearest scroll container. Where that container isn't the one\nthe user actually scrolls — a `zn-panel` body sized to its content inside a scrolling\nslideout, say — the label never moves, so it gets translated by hand instead."
16644
+ "description": "Native sticky only follows the nearest scroll container. Where that container isn't the one\nthe user actually scrolls — a `zn-panel` body sized to its content inside a scrolling\nslideout, say — the label never moves, so it is moved against the real scroller instead."
16635
16645
  },
16636
16646
  {
16637
16647
  "kind": "method",
16638
- "name": "trackScroller",
16648
+ "name": "scrollLinkedTravel",
16639
16649
  "privacy": "private",
16650
+ "return": {
16651
+ "type": {
16652
+ "text": "Animation | null"
16653
+ }
16654
+ },
16640
16655
  "parameters": [
16641
16656
  {
16642
16657
  "name": "scroller",
16643
16658
  "type": {
16644
- "text": "HTMLElement | null"
16659
+ "text": "HTMLElement"
16645
16660
  }
16646
16661
  }
16647
- ]
16662
+ ],
16663
+ "description": "The label's whole journey, as the scroll positions it turns at: still until the fieldset's top reaches the sticky\nline, then a pixel for every pixel of scroll until it has crossed the fieldset. `fill: both` holds it at either\nend, which is the clamp the scroll handler applies by hand."
16664
+ },
16665
+ {
16666
+ "kind": "method",
16667
+ "name": "detach",
16668
+ "privacy": "private",
16669
+ "description": "Drops everything this component has put on the label or on the scroller."
16648
16670
  },
16649
16671
  {
16650
16672
  "kind": "method",
@@ -16665,12 +16687,41 @@
16665
16687
  ],
16666
16688
  "description": "The document scrolls through the window, every other scroller reports its own events."
16667
16689
  },
16690
+ {
16691
+ "kind": "method",
16692
+ "name": "visibleTop",
16693
+ "privacy": "private",
16694
+ "parameters": [
16695
+ {
16696
+ "name": "scroller",
16697
+ "type": {
16698
+ "text": "HTMLElement"
16699
+ }
16700
+ }
16701
+ ],
16702
+ "description": "Where the scroller's own top edge sits, which for the document is the top of the viewport."
16703
+ },
16704
+ {
16705
+ "kind": "field",
16706
+ "name": "fieldset",
16707
+ "type": {
16708
+ "text": "HTMLElement | null"
16709
+ },
16710
+ "privacy": "private",
16711
+ "readonly": true
16712
+ },
16668
16713
  {
16669
16714
  "kind": "field",
16670
16715
  "name": "onScroll",
16671
16716
  "privacy": "private",
16672
16717
  "readonly": true
16673
16718
  },
16719
+ {
16720
+ "kind": "field",
16721
+ "name": "onScrollEnd",
16722
+ "privacy": "private",
16723
+ "readonly": true
16724
+ },
16674
16725
  {
16675
16726
  "kind": "field",
16676
16727
  "name": "onViewportResize",
@@ -34658,7 +34709,7 @@
34658
34709
  "name": "slashController",
34659
34710
  "privacy": "private",
34660
34711
  "readonly": true,
34661
- "default": "new SlashMenuController(this, { menu: () => this.mountSlashMenu(), // The menu only belongs in a block that is nothing but the slash command — a // block prefix like \"## \" is not valid remarkd part-way through a line. items: () => this.isSlashBlock() ? SLASH_ITEMS.filter(item => item.action !== 'include' || !!this.includeUrl) : [], onSelect: item => this.handleSlashSelect(item) })"
34712
+ "default": "new SlashMenuController(this, { menu: () => this.mountSlashMenu(), // The menu only belongs in a block that is nothing but the slash command — a // block prefix like \"## \" is not valid remarkd part-way through a line. items: () => this.isSlashBlock() ? SLASH_ITEMS.filter(item => this.slashItemAvailable(item)) : [], onSelect: item => this.handleSlashSelect(item) })"
34662
34713
  },
34663
34714
  {
34664
34715
  "kind": "field",
@@ -34856,6 +34907,84 @@
34856
34907
  "privacy": "private",
34857
34908
  "default": "''"
34858
34909
  },
34910
+ {
34911
+ "kind": "field",
34912
+ "name": "linkPickerOpen",
34913
+ "type": {
34914
+ "text": "boolean"
34915
+ },
34916
+ "privacy": "private",
34917
+ "default": "false"
34918
+ },
34919
+ {
34920
+ "kind": "field",
34921
+ "name": "linkQuery",
34922
+ "type": {
34923
+ "text": "string"
34924
+ },
34925
+ "privacy": "private",
34926
+ "default": "''"
34927
+ },
34928
+ {
34929
+ "kind": "field",
34930
+ "name": "linkResults",
34931
+ "type": {
34932
+ "text": "LinkOption[] | null"
34933
+ },
34934
+ "privacy": "private",
34935
+ "default": "null"
34936
+ },
34937
+ {
34938
+ "kind": "field",
34939
+ "name": "linkSearchFailed",
34940
+ "type": {
34941
+ "text": "boolean"
34942
+ },
34943
+ "privacy": "private",
34944
+ "default": "false"
34945
+ },
34946
+ {
34947
+ "kind": "field",
34948
+ "name": "linkSelection",
34949
+ "type": {
34950
+ "text": "[number, number] | null"
34951
+ },
34952
+ "privacy": "private",
34953
+ "default": "null"
34954
+ },
34955
+ {
34956
+ "kind": "field",
34957
+ "name": "linkSearchTimer",
34958
+ "type": {
34959
+ "text": "ReturnType<typeof setTimeout> | undefined"
34960
+ },
34961
+ "privacy": "private"
34962
+ },
34963
+ {
34964
+ "kind": "field",
34965
+ "name": "linkSearchToken",
34966
+ "type": {
34967
+ "text": "number"
34968
+ },
34969
+ "privacy": "private",
34970
+ "default": "0"
34971
+ },
34972
+ {
34973
+ "kind": "field",
34974
+ "name": "linkRefs",
34975
+ "privacy": "private",
34976
+ "default": "new Map<string, LinkOption | null>()",
34977
+ "description": "Resolved link targets by reference; a null value is one the app does not know."
34978
+ },
34979
+ {
34980
+ "kind": "field",
34981
+ "name": "linkRefsPending",
34982
+ "type": {
34983
+ "text": "boolean"
34984
+ },
34985
+ "privacy": "private",
34986
+ "default": "false"
34987
+ },
34859
34988
  {
34860
34989
  "kind": "field",
34861
34990
  "name": "pendingDragHandle",
@@ -34969,6 +35098,16 @@
34969
35098
  "description": "Endpoint listing the Includes this document may embed, as\n`{\"items\":[{id,title,description,scope,keywords,languages,url}]}`. Labels the\nchips rendered for `include::` directives and feeds the include picker.",
34970
35099
  "attribute": "include-url"
34971
35100
  },
35101
+ {
35102
+ "kind": "field",
35103
+ "name": "linkUrl",
35104
+ "type": {
35105
+ "text": "string"
35106
+ },
35107
+ "default": "''",
35108
+ "description": "Endpoint the article link picker searches, as\n`{\"items\":[{ref,kind,title,context,status}]}`. Queried with `?q=<term>` as\nthe author types and with `?refs=a,b` to resolve the references a body\nalready carries.",
35109
+ "attribute": "link-url"
35110
+ },
34972
35111
  {
34973
35112
  "kind": "field",
34974
35113
  "name": "allowRaw",
@@ -35091,6 +35230,10 @@
35091
35230
  "kind": "method",
35092
35231
  "name": "handleIncludeUrlChange"
35093
35232
  },
35233
+ {
35234
+ "kind": "method",
35235
+ "name": "handleLinkUrlChange"
35236
+ },
35094
35237
  {
35095
35238
  "kind": "method",
35096
35239
  "name": "splitBlocks",
@@ -35699,6 +35842,31 @@
35699
35842
  }
35700
35843
  ]
35701
35844
  },
35845
+ {
35846
+ "kind": "method",
35847
+ "name": "pickLink",
35848
+ "privacy": "private",
35849
+ "description": "Opens the picker over the block being edited. The caret range is captured\nnow: the picker's own filter takes focus, so the textarea's selection is\ngone by the time an option is chosen."
35850
+ },
35851
+ {
35852
+ "kind": "field",
35853
+ "name": "closeLinkPicker",
35854
+ "privacy": "private"
35855
+ },
35856
+ {
35857
+ "kind": "method",
35858
+ "name": "searchLinks",
35859
+ "privacy": "private",
35860
+ "parameters": [
35861
+ {
35862
+ "name": "term",
35863
+ "type": {
35864
+ "text": "string"
35865
+ }
35866
+ }
35867
+ ],
35868
+ "description": "Debounced; only the newest response is kept."
35869
+ },
35702
35870
  {
35703
35871
  "kind": "field",
35704
35872
  "name": "closeIncludePicker",
@@ -35804,6 +35972,25 @@
35804
35972
  },
35805
35973
  "description": "Fetches the include list once; every later caller shares the same promise."
35806
35974
  },
35975
+ {
35976
+ "kind": "method",
35977
+ "name": "resolveContentLinks",
35978
+ "privacy": "private",
35979
+ "description": "Resolves the references in the body that have not been resolved yet, so a\nlink whose target is gone can be marked. A failed request records nothing:\nan unanswered reference is not a broken one."
35980
+ },
35981
+ {
35982
+ "kind": "method",
35983
+ "name": "markContentLinks",
35984
+ "privacy": "private",
35985
+ "parameters": [
35986
+ {
35987
+ "name": "root",
35988
+ "type": {
35989
+ "text": "Element"
35990
+ }
35991
+ }
35992
+ ]
35993
+ },
35807
35994
  {
35808
35995
  "kind": "method",
35809
35996
  "name": "autosize",
@@ -35981,7 +36168,44 @@
35981
36168
  }
35982
36169
  }
35983
36170
  ],
35984
- "description": "An inline action needs an open block to apply its mark to."
36171
+ "description": "Inline marks and the article link both apply into an open block, not a new one."
36172
+ },
36173
+ {
36174
+ "kind": "method",
36175
+ "name": "actionAvailable",
36176
+ "privacy": "private",
36177
+ "return": {
36178
+ "type": {
36179
+ "text": "boolean"
36180
+ }
36181
+ },
36182
+ "parameters": [
36183
+ {
36184
+ "name": "action",
36185
+ "type": {
36186
+ "text": "EditorAction"
36187
+ }
36188
+ }
36189
+ ],
36190
+ "description": "A picker action with no endpoint configured is not offered at all."
36191
+ },
36192
+ {
36193
+ "kind": "method",
36194
+ "name": "slashItemAvailable",
36195
+ "privacy": "private",
36196
+ "return": {
36197
+ "type": {
36198
+ "text": "boolean"
36199
+ }
36200
+ },
36201
+ "parameters": [
36202
+ {
36203
+ "name": "item",
36204
+ "type": {
36205
+ "text": "SlashMenuItem"
36206
+ }
36207
+ }
36208
+ ]
35985
36209
  },
35986
36210
  {
35987
36211
  "kind": "method",
@@ -36041,6 +36265,24 @@
36041
36265
  "name": "renderIncludePicker",
36042
36266
  "privacy": "private"
36043
36267
  },
36268
+ {
36269
+ "kind": "method",
36270
+ "name": "renderLinkPicker",
36271
+ "privacy": "private"
36272
+ },
36273
+ {
36274
+ "kind": "method",
36275
+ "name": "insertLink",
36276
+ "privacy": "private",
36277
+ "parameters": [
36278
+ {
36279
+ "name": "item",
36280
+ "type": {
36281
+ "text": "LinkOption"
36282
+ }
36283
+ }
36284
+ ]
36285
+ },
36044
36286
  {
36045
36287
  "kind": "method",
36046
36288
  "name": "renderImagePicker",
@@ -36112,6 +36354,15 @@
36112
36354
  "description": "Endpoint listing the Includes this document may embed, as\n`{\"items\":[{id,title,description,scope,keywords,languages,url}]}`. Labels the\nchips rendered for `include::` directives and feeds the include picker.",
36113
36355
  "fieldName": "includeUrl"
36114
36356
  },
36357
+ {
36358
+ "name": "link-url",
36359
+ "type": {
36360
+ "text": "string"
36361
+ },
36362
+ "default": "''",
36363
+ "description": "Endpoint the article link picker searches, as\n`{\"items\":[{ref,kind,title,context,status}]}`. Queried with `?q=<term>` as\nthe author types and with `?refs=a,b` to resolve the references a body\nalready carries.",
36364
+ "fieldName": "linkUrl"
36365
+ },
36115
36366
  {
36116
36367
  "name": "allow-raw",
36117
36368
  "type": {
@@ -49706,62 +49957,42 @@
49706
49957
  },
49707
49958
  {
49708
49959
  "kind": "javascript-module",
49709
- "path": "components/translation-group/translation-group.js",
49960
+ "path": "components/translations/translations.js",
49710
49961
  "declarations": [
49711
49962
  {
49712
49963
  "kind": "class",
49713
49964
  "description": "",
49714
- "name": "ZnTranslationGroup",
49965
+ "name": "ZnTranslations",
49715
49966
  "cssParts": [
49716
49967
  {
49717
- "description": "The component's base wrapper.",
49718
- "name": "base",
49719
- "inheritedFrom": {
49720
- "name": "ZnPanel",
49721
- "module": "src/components/panel/panel.component.ts"
49722
- }
49968
+ "description": "The form control that wraps the label, the language select, the field and the help text.",
49969
+ "name": "form-control"
49723
49970
  },
49724
49971
  {
49725
- "description": "The form group holding the caption, the language select and the fields.",
49726
- "name": "form-group"
49972
+ "description": "The label's wrapper.",
49973
+ "name": "form-control-label"
49727
49974
  },
49728
49975
  {
49729
- "description": "The row of buttons at the bottom of the body.",
49730
- "name": "actions"
49976
+ "description": "The wrapper around the field being edited.",
49977
+ "name": "form-control-input"
49731
49978
  },
49732
49979
  {
49733
- "description": "The select that chooses the language every child is editing, in the group's chip slot.",
49734
- "name": "language-field"
49980
+ "description": "The help text's wrapper.",
49981
+ "name": "form-control-help-text"
49735
49982
  },
49736
49983
  {
49737
- "description": "The select itself.",
49984
+ "description": "The select that chooses the language being edited.",
49738
49985
  "name": "language-select"
49739
49986
  }
49740
49987
  ],
49741
49988
  "slots": [
49742
49989
  {
49743
- "description": "The `zn-translations` fields the select drives.",
49744
- "name": "",
49745
- "inheritedFrom": {
49746
- "name": "ZnPanel",
49747
- "module": "src/components/panel/panel.component.ts"
49748
- }
49749
- },
49750
- {
49751
- "description": "Buttons for the bottom of the panel, on the white body rather than the grey footer. They sit on the right, as zinc's form action rows do; `align=\"start\"` moves one to the left. Write them in the order they should be read — the sides are set by CSS ordering, so markup order is what a keyboard follows.",
49752
- "name": "actions",
49753
- "inheritedFrom": {
49754
- "name": "ZnPanel",
49755
- "module": "src/components/panel/panel.component.ts"
49756
- }
49990
+ "description": "The field's label. Alternatively, use the `label` attribute.",
49991
+ "name": "label"
49757
49992
  },
49758
49993
  {
49759
- "description": "Content displayed in the grey panel footer.",
49760
- "name": "footer",
49761
- "inheritedFrom": {
49762
- "name": "ZnPanel",
49763
- "module": "src/components/panel/panel.component.ts"
49764
- }
49994
+ "description": "Text describing how to fill the field in, shown below it and shared by every language. Alternatively, use the `help-text` attribute.",
49995
+ "name": "help-text"
49765
49996
  }
49766
49997
  ],
49767
49998
  "members": [
@@ -49772,14 +50003,44 @@
49772
50003
  "text": "object"
49773
50004
  },
49774
50005
  "static": true,
49775
- "default": "{ 'zn-chip': ZnChip, 'zn-form-group': ZnFormGroup, 'zn-option': ZnOption, 'zn-select': ZnSelect }"
50006
+ "default": "{ 'zn-chip': ZnChip, 'zn-inline-edit': ZnInlineEdit, 'zn-input': ZnInput, 'zn-option': ZnOption, 'zn-select': ZnSelect, 'zn-textarea': ZnTextarea }"
49776
50007
  },
49777
50008
  {
49778
50009
  "kind": "field",
49779
- "name": "_slotController",
50010
+ "name": "formControlController",
50011
+ "type": {
50012
+ "text": "FormControlController"
50013
+ },
49780
50014
  "privacy": "private",
49781
50015
  "readonly": true,
49782
- "default": "new HasSlotController(this, 'actions', 'footer')"
50016
+ "default": "new FormControlController(this)"
50017
+ },
50018
+ {
50019
+ "kind": "field",
50020
+ "name": "hasSlotController",
50021
+ "privacy": "private",
50022
+ "readonly": true,
50023
+ "default": "new HasSlotController(this, 'label', 'help-text')"
50024
+ },
50025
+ {
50026
+ "kind": "field",
50027
+ "name": "name",
50028
+ "type": {
50029
+ "text": "string"
50030
+ },
50031
+ "default": "''",
50032
+ "description": "The name submitted with the form.",
50033
+ "attribute": "name"
50034
+ },
50035
+ {
50036
+ "kind": "field",
50037
+ "name": "value",
50038
+ "type": {
50039
+ "text": "string"
50040
+ },
50041
+ "default": "'{\"en\":\"\"}'",
50042
+ "description": "The translations as a JSON object keyed by language code. The mirror of `values` in attribute form.",
50043
+ "attribute": "value"
49783
50044
  },
49784
50045
  {
49785
50046
  "kind": "field",
@@ -49788,7 +50049,7 @@
49788
50049
  "text": "string"
49789
50050
  },
49790
50051
  "default": "''",
49791
- "description": "The form group's label. An alias for the inherited `caption`, which wins where both are set.",
50052
+ "description": "The label shown above the field. If you need HTML, use the `label` slot instead.",
49792
50053
  "attribute": "label"
49793
50054
  },
49794
50055
  {
@@ -49798,928 +50059,797 @@
49798
50059
  "text": "string"
49799
50060
  },
49800
50061
  "default": "''",
49801
- "description": "Sits under the label, above the language select, as help text does in any other form group.",
50062
+ "description": "Text shown below the field, describing how to fill it in. Applies to every language. If you need HTML, use the\n`help-text` slot instead.",
49802
50063
  "attribute": "help-text"
49803
50064
  },
49804
50065
  {
49805
50066
  "kind": "field",
49806
- "name": "inline",
50067
+ "name": "disabled",
49807
50068
  "type": {
49808
50069
  "text": "boolean"
49809
50070
  },
49810
50071
  "default": "false",
49811
- "description": "Drops the panel chrome — border, background and padding — so the group reads as a section of the surrounding form\nrather than a panel of its own. For groups nested inside another panel, where the fields would otherwise sit\nindented behind a second border.",
49812
- "attribute": "inline",
50072
+ "description": "Disables editing in every language.",
50073
+ "attribute": "disabled",
49813
50074
  "reflects": true
49814
50075
  },
49815
50076
  {
49816
50077
  "kind": "field",
49817
- "name": "languageLabel",
50078
+ "name": "required",
49818
50079
  "type": {
49819
- "text": "string"
50080
+ "text": "boolean"
49820
50081
  },
49821
- "default": "'Edit Languages'",
49822
- "description": "The select's accessible name. Not shown — the caption is what names the section on screen — but read out by a\nscreen reader, which has nothing else to go on once the visible label is gone.",
49823
- "attribute": "language-label"
50082
+ "default": "false",
50083
+ "description": "Marks the label required. Validity is not enforced per language.",
50084
+ "attribute": "required",
50085
+ "reflects": true
49824
50086
  },
49825
50087
  {
49826
50088
  "kind": "field",
49827
- "name": "languages",
50089
+ "name": "flush",
49828
50090
  "type": {
49829
- "text": "Record<string, string>"
50091
+ "text": "boolean"
49830
50092
  },
49831
- "default": "{ 'en': 'EN' }",
49832
- "description": "The languages on offer, as language code to display name — `{\"en\": \"English\", \"fr\": \"French\"}`. Writing the code\nas the name (`{\"en\": \"EN\"}`) is also accepted. `en` is the language every other one falls back to. Set on every\nchild, so they do not need their own copy.",
49833
- "attribute": "languages"
50093
+ "default": "false",
50094
+ "description": "Removes the component's own padding.",
50095
+ "attribute": "flush",
50096
+ "reflects": true
49834
50097
  },
49835
50098
  {
49836
50099
  "kind": "field",
49837
- "name": "_activeLanguage",
50100
+ "name": "inputType",
49838
50101
  "type": {
49839
- "text": "string"
50102
+ "text": "'text' | 'number' | 'textarea'"
49840
50103
  },
49841
- "privacy": "private",
49842
- "default": "'en'",
49843
- "description": "The language every child is currently editing."
50104
+ "default": "'text'",
50105
+ "description": "The control each translation is edited through.",
50106
+ "attribute": "input-type"
49844
50107
  },
49845
50108
  {
49846
50109
  "kind": "field",
49847
- "name": "_form",
50110
+ "name": "textareaRows",
49848
50111
  "type": {
49849
- "text": "HTMLFormElement | null"
50112
+ "text": "number | undefined"
49850
50113
  },
49851
- "privacy": "private",
49852
- "default": "null"
50114
+ "description": "Rows of the textarea, when `input-type` is `textarea`.",
50115
+ "attribute": "textarea-rows"
49853
50116
  },
49854
50117
  {
49855
- "kind": "method",
49856
- "name": "getAllTranslations",
49857
- "privacy": "private",
49858
- "return": {
49859
- "type": {
49860
- "text": "ZnTranslations[]"
49861
- }
50118
+ "kind": "field",
50119
+ "name": "inlineEdit",
50120
+ "type": {
50121
+ "text": "boolean"
49862
50122
  },
49863
- "description": "The children the select drives. Read live rather than cached, so markup added later is picked up."
49864
- },
49865
- {
49866
- "kind": "method",
49867
- "name": "syncChildren",
49868
- "privacy": "private",
49869
- "description": "Sync grouped state, languages, and active language to all children."
50123
+ "default": "false",
50124
+ "description": "Edits the translation through a `zn-inline-edit` — the value reads as text until it is clicked — rather than a\nplain input or textarea.",
50125
+ "attribute": "inline-edit",
50126
+ "reflects": true
49870
50127
  },
49871
50128
  {
49872
- "kind": "method",
49873
- "name": "languageState",
49874
- "privacy": "private",
49875
- "return": {
49876
- "type": {
49877
- "text": "{ type: 'success' | 'warning' | 'error'; label: string }"
49878
- }
50129
+ "kind": "field",
50130
+ "name": "slashItems",
50131
+ "type": {
50132
+ "text": "SlashMenuItem[]"
49879
50133
  },
49880
- "parameters": [
49881
- {
49882
- "name": "language",
49883
- "type": {
49884
- "text": "string"
49885
- }
49886
- }
49887
- ],
49888
- "description": "A language is translated once every child carries a value for it, partial while only some do. The chips and the\ncount are read off the children, so a child's edit has to bring the group back round."
50134
+ "default": "[]",
50135
+ "description": "Quick insertions offered by the slash menu on `text` and `textarea` inputs. Accepts a JSON array of items, or\nthe shorthand `Brand name={{BRAND_NAME}}, Support email={{SUPPORT_EMAIL}}`. Every language shares the list.",
50136
+ "attribute": "slash-items"
49889
50137
  },
49890
50138
  {
49891
- "kind": "method",
49892
- "name": "displayName",
49893
- "privacy": "private",
49894
- "return": {
49895
- "type": {
49896
- "text": "string"
49897
- }
50139
+ "kind": "field",
50140
+ "name": "slashPreset",
50141
+ "type": {
50142
+ "text": "string"
49898
50143
  },
49899
- "parameters": [
49900
- {
49901
- "name": "language",
49902
- "type": {
49903
- "text": "string"
49904
- }
49905
- }
49906
- ],
49907
- "description": "The configured name, or the code where `languages` does not name the language."
49908
- },
49909
- {
49910
- "kind": "method",
49911
- "name": "syncChildLanguages",
49912
- "privacy": "private",
49913
- "description": "Children take their language list from the group, so a change to `languages` has to reach them."
50144
+ "default": "''",
50145
+ "description": "Names of item sets registered with `registerSlashMenuPreset`, comma separated.",
50146
+ "attribute": "slash-preset"
49914
50147
  },
49915
50148
  {
49916
50149
  "kind": "field",
49917
- "name": "handleSlotChange",
49918
- "privacy": "private"
49919
- },
49920
- {
49921
- "kind": "method",
49922
- "name": "switchLanguage",
49923
- "privacy": "private",
49924
- "parameters": [
49925
- {
49926
- "name": "lang",
49927
- "type": {
49928
- "text": "string"
49929
- }
49930
- }
49931
- ],
49932
- "description": "Moves every child onto `lang` and announces it. Does not touch their values."
50150
+ "name": "slashTrigger",
50151
+ "type": {
50152
+ "text": "string"
50153
+ },
50154
+ "default": "'/'",
50155
+ "description": "The characters that open the slash menu.",
50156
+ "attribute": "slash-trigger"
49933
50157
  },
49934
50158
  {
49935
50159
  "kind": "field",
49936
- "name": "handleLanguageSelect",
49937
- "privacy": "private",
49938
- "description": "The select's own change and input events describe the language being browsed, not a translation being edited, so\nthey are stopped rather than allowed to reach a consumer listening for a child's value change."
50160
+ "name": "slashHeading",
50161
+ "type": {
50162
+ "text": "string"
50163
+ },
50164
+ "default": "'Insert'",
50165
+ "description": "The name the slash menu's list is announced by.",
50166
+ "attribute": "slash-heading"
49939
50167
  },
49940
50168
  {
49941
50169
  "kind": "field",
49942
- "name": "handleLanguageInput",
49943
- "privacy": "private"
50170
+ "name": "slashHideKeys",
50171
+ "type": {
50172
+ "text": "boolean"
50173
+ },
50174
+ "default": "false",
50175
+ "description": "Hides the insertion keys normally shown against the slash menu's items.",
50176
+ "attribute": "slash-hide-keys"
49944
50177
  },
49945
50178
  {
49946
50179
  "kind": "field",
49947
- "name": "handleChildChange",
49948
- "privacy": "private",
49949
- "description": "A child's edit changes which chips the select shows, and the translated count above it."
50180
+ "name": "slashRecentKey",
50181
+ "type": {
50182
+ "text": "string"
50183
+ },
50184
+ "default": "''",
50185
+ "description": "Lists the slash menu items most recently chosen here above the rest, remembered under this key.",
50186
+ "attribute": "slash-recent-key"
49950
50187
  },
49951
50188
  {
49952
50189
  "kind": "field",
49953
- "name": "handleFormReset",
49954
- "privacy": "private",
49955
- "description": "The children restore their own values on the form's reset event without announcing it, and the chips and the\ncount are read off them — so re-read once every listener on that event has run."
50190
+ "name": "slashItemsProvider",
50191
+ "type": {
50192
+ "text": "(query: string) => SlashMenuItem[] | Promise<SlashMenuItem[]> | undefined"
50193
+ },
50194
+ "description": "Resolves additional slash menu items each time the menu opens. JavaScript only."
49956
50195
  },
49957
50196
  {
49958
50197
  "kind": "field",
49959
- "name": "hasSlotController",
49960
- "privacy": "private",
49961
- "readonly": true,
49962
- "default": "new HasSlotController(this, '[default]', 'actions', 'footer')",
49963
- "inheritedFrom": {
49964
- "name": "ZnPanel",
49965
- "module": "components/panel/panel.js"
49966
- }
50198
+ "name": "grouped",
50199
+ "type": {
50200
+ "text": "boolean"
50201
+ },
50202
+ "default": "false",
50203
+ "description": "Hides this component's own language select and defers the choice to a parent zn-translation-group. The group sets\nthis on its children itself.",
50204
+ "attribute": "grouped",
50205
+ "reflects": true
49967
50206
  },
49968
50207
  {
49969
50208
  "kind": "field",
49970
- "name": "basis",
50209
+ "name": "languages",
49971
50210
  "type": {
49972
- "text": "number"
50211
+ "text": "Record<string, string>"
49973
50212
  },
49974
- "attribute": "basis-px",
49975
- "inheritedFrom": {
49976
- "name": "ZnPanel",
49977
- "module": "components/panel/panel.js"
49978
- }
50213
+ "default": "{ 'en': 'EN' }",
50214
+ "description": "The languages on offer, as language code to display name — `{\"en\": \"English\", \"fr\": \"French\"}`. Writing the code\nas the name (`{\"en\": \"EN\"}`) is also accepted. `en` is the language every other one falls back to.",
50215
+ "attribute": "languages"
49979
50216
  },
49980
50217
  {
49981
50218
  "kind": "field",
49982
- "name": "caption",
50219
+ "name": "values",
49983
50220
  "type": {
49984
- "text": "string"
50221
+ "text": "Record<string, string>"
49985
50222
  },
49986
- "attribute": "caption",
49987
- "inheritedFrom": {
49988
- "name": "ZnPanel",
49989
- "module": "components/panel/panel.js"
49990
- }
50223
+ "default": "{}",
50224
+ "description": "The translations as an object keyed by language code. The mirror of `value` in property form.",
50225
+ "attribute": "values"
49991
50226
  },
49992
50227
  {
49993
50228
  "kind": "field",
49994
- "name": "icon",
50229
+ "name": "defaultValue",
49995
50230
  "type": {
49996
50231
  "text": "string"
49997
50232
  },
49998
- "attribute": "icon",
49999
- "inheritedFrom": {
50000
- "name": "ZnPanel",
50001
- "module": "components/panel/panel.js"
50002
- }
50003
- },
50004
- {
50005
- "kind": "field",
50006
- "name": "tabbed",
50007
- "type": {
50008
- "text": "boolean"
50009
- },
50010
- "attribute": "tabbed",
50011
- "inheritedFrom": {
50012
- "name": "ZnPanel",
50013
- "module": "components/panel/panel.js"
50014
- }
50233
+ "default": "'{\"en\":\"\"}'",
50234
+ "description": "The serialized translations a form reset restores. Taken from the `value` attribute where there is one."
50015
50235
  },
50016
50236
  {
50017
50237
  "kind": "field",
50018
- "name": "headerBorderless",
50238
+ "name": "_activeLanguage",
50019
50239
  "type": {
50020
- "text": "boolean"
50240
+ "text": "string"
50021
50241
  },
50022
- "attribute": "header-borderless",
50023
- "inheritedFrom": {
50024
- "name": "ZnPanel",
50025
- "module": "components/panel/panel.js"
50026
- }
50242
+ "privacy": "private",
50243
+ "default": "'en'"
50027
50244
  },
50028
50245
  {
50029
50246
  "kind": "field",
50030
- "name": "cosmic",
50247
+ "name": "validity",
50031
50248
  "type": {
50032
- "text": "boolean"
50249
+ "text": "ValidityState"
50033
50250
  },
50034
- "attribute": "cosmic",
50035
- "inheritedFrom": {
50036
- "name": "ZnPanel",
50037
- "module": "components/panel/panel.js"
50038
- }
50251
+ "readonly": true
50039
50252
  },
50040
50253
  {
50041
50254
  "kind": "field",
50042
- "name": "flush",
50043
- "type": {
50044
- "text": "boolean"
50045
- },
50046
- "attribute": "flush",
50047
- "inheritedFrom": {
50048
- "name": "ZnPanel",
50049
- "module": "components/panel/panel.js"
50050
- }
50255
+ "name": "validationMessage",
50256
+ "readonly": true
50051
50257
  },
50052
50258
  {
50053
- "kind": "field",
50054
- "name": "flushX",
50055
- "type": {
50056
- "text": "boolean"
50057
- },
50058
- "attribute": "flush-x",
50059
- "inheritedFrom": {
50060
- "name": "ZnPanel",
50061
- "module": "components/panel/panel.js"
50062
- }
50259
+ "kind": "method",
50260
+ "name": "checkValidity"
50063
50261
  },
50064
50262
  {
50065
- "kind": "field",
50066
- "name": "flushY",
50067
- "type": {
50068
- "text": "boolean"
50069
- },
50070
- "attribute": "flush-y",
50071
- "inheritedFrom": {
50072
- "name": "ZnPanel",
50073
- "module": "components/panel/panel.js"
50074
- }
50263
+ "kind": "method",
50264
+ "name": "getForm"
50075
50265
  },
50076
50266
  {
50077
- "kind": "field",
50078
- "name": "flushFooter",
50079
- "type": {
50080
- "text": "boolean"
50081
- },
50082
- "attribute": "flush-footer",
50083
- "inheritedFrom": {
50084
- "name": "ZnPanel",
50085
- "module": "components/panel/panel.js"
50086
- }
50267
+ "kind": "method",
50268
+ "name": "reportValidity"
50087
50269
  },
50088
50270
  {
50089
- "kind": "field",
50090
- "name": "transparent",
50091
- "type": {
50092
- "text": "boolean"
50093
- },
50094
- "attribute": "transparent",
50095
- "inheritedFrom": {
50096
- "name": "ZnPanel",
50097
- "module": "components/panel/panel.js"
50098
- }
50271
+ "kind": "method",
50272
+ "name": "setCustomValidity"
50099
50273
  },
50100
50274
  {
50101
- "kind": "field",
50102
- "name": "shadow",
50103
- "type": {
50104
- "text": "boolean"
50105
- },
50106
- "attribute": "shadow",
50107
- "inheritedFrom": {
50108
- "name": "ZnPanel",
50109
- "module": "components/panel/panel.js"
50110
- }
50111
- }
50112
- ],
50113
- "events": [
50114
- {
50115
- "description": "Emitted when the active language changes. Detail: `{ language: string }`.",
50116
- "name": "zn-language-change"
50117
- }
50118
- ],
50119
- "attributes": [
50120
- {
50121
- "name": "label",
50122
- "type": {
50123
- "text": "string"
50124
- },
50125
- "default": "''",
50126
- "description": "The form group's label. An alias for the inherited `caption`, which wins where both are set.",
50127
- "fieldName": "label"
50275
+ "kind": "method",
50276
+ "name": "setActiveLanguage",
50277
+ "privacy": "public",
50278
+ "parameters": [
50279
+ {
50280
+ "name": "language",
50281
+ "type": {
50282
+ "text": "string"
50283
+ }
50284
+ }
50285
+ ],
50286
+ "description": "Sets the active language externally. Used by zn-translation-group. Browsing to a language does not create a key\nfor it — an untouched language stays absent from `values` so it is not submitted as an empty translation."
50128
50287
  },
50129
50288
  {
50130
- "name": "help-text",
50131
- "type": {
50132
- "text": "string"
50289
+ "kind": "method",
50290
+ "name": "getActiveLanguage",
50291
+ "privacy": "public",
50292
+ "return": {
50293
+ "type": {
50294
+ "text": "string"
50295
+ }
50133
50296
  },
50134
- "default": "''",
50135
- "description": "Sits under the label, above the language select, as help text does in any other form group.",
50136
- "fieldName": "helpText"
50297
+ "description": "Returns the currently active language."
50137
50298
  },
50138
50299
  {
50139
- "name": "inline",
50140
- "type": {
50141
- "text": "boolean"
50142
- },
50143
- "default": "false",
50144
- "description": "Drops the panel chrome — border, background and padding — so the group reads as a section of the surrounding form\nrather than a panel of its own. For groups nested inside another panel, where the fields would otherwise sit\nindented behind a second border.",
50145
- "fieldName": "inline"
50300
+ "kind": "method",
50301
+ "name": "addLanguageKey",
50302
+ "privacy": "public",
50303
+ "parameters": [
50304
+ {
50305
+ "name": "languageCode",
50306
+ "type": {
50307
+ "text": "string"
50308
+ }
50309
+ }
50310
+ ],
50311
+ "description": "Adds a language key to this component's values if not already present. Used by zn-translation-group."
50146
50312
  },
50147
50313
  {
50148
- "name": "language-label",
50149
- "type": {
50150
- "text": "string"
50314
+ "kind": "method",
50315
+ "name": "getValueLanguages",
50316
+ "privacy": "public",
50317
+ "return": {
50318
+ "type": {
50319
+ "text": "string[]"
50320
+ }
50151
50321
  },
50152
- "default": "'Edit Languages'",
50153
- "description": "The select's accessible name. Not shown — the caption is what names the section on screen — but read out by a\nscreen reader, which has nothing else to go on once the visible label is gone.",
50154
- "fieldName": "languageLabel"
50322
+ "description": "Returns all language codes that have values."
50155
50323
  },
50156
50324
  {
50157
- "name": "languages",
50158
- "type": {
50159
- "text": "Record<string, string>"
50325
+ "kind": "method",
50326
+ "name": "hasTranslation",
50327
+ "privacy": "public",
50328
+ "return": {
50329
+ "type": {
50330
+ "text": "boolean"
50331
+ }
50160
50332
  },
50161
- "default": "{ 'en': 'EN' }",
50162
- "description": "The languages on offer, as language code to display name — `{\"en\": \"English\", \"fr\": \"French\"}`. Writing the code\nas the name (`{\"en\": \"EN\"}`) is also accepted. `en` is the language every other one falls back to. Set on every\nchild, so they do not need their own copy.",
50163
- "fieldName": "languages"
50333
+ "parameters": [
50334
+ {
50335
+ "name": "language",
50336
+ "type": {
50337
+ "text": "string"
50338
+ }
50339
+ }
50340
+ ],
50341
+ "description": "Whether the language carries a translation of its own, rather than falling back to English."
50164
50342
  },
50165
50343
  {
50166
- "name": "basis-px",
50167
- "type": {
50168
- "text": "number"
50344
+ "kind": "method",
50345
+ "name": "languageState",
50346
+ "privacy": "private",
50347
+ "return": {
50348
+ "type": {
50349
+ "text": "{ type: 'success' | 'error'; label: string }"
50350
+ }
50169
50351
  },
50170
- "fieldName": "basis",
50171
- "inheritedFrom": {
50172
- "name": "ZnPanel",
50173
- "module": "src/components/panel/panel.component.ts"
50174
- }
50352
+ "parameters": [
50353
+ {
50354
+ "name": "language",
50355
+ "type": {
50356
+ "text": "string"
50357
+ }
50358
+ }
50359
+ ],
50360
+ "description": "The chip shown against a language, in the select's value and against each of its options."
50175
50361
  },
50176
50362
  {
50177
- "name": "caption",
50178
- "type": {
50179
- "text": "string"
50363
+ "kind": "method",
50364
+ "name": "languageLabel",
50365
+ "privacy": "private",
50366
+ "return": {
50367
+ "type": {
50368
+ "text": "string"
50369
+ }
50180
50370
  },
50181
- "fieldName": "caption",
50182
- "inheritedFrom": {
50183
- "name": "ZnPanel",
50184
- "module": "src/components/panel/panel.component.ts"
50185
- }
50371
+ "parameters": [
50372
+ {
50373
+ "name": "language",
50374
+ "type": {
50375
+ "text": "string"
50376
+ }
50377
+ }
50378
+ ],
50379
+ "description": "The configured name, or the code where `languages` does not name the language."
50186
50380
  },
50187
50381
  {
50188
- "name": "icon",
50189
- "type": {
50190
- "text": "string"
50382
+ "kind": "method",
50383
+ "name": "pendingValues",
50384
+ "privacy": "private",
50385
+ "return": {
50386
+ "type": {
50387
+ "text": "Record<string, string>"
50388
+ }
50191
50389
  },
50192
- "fieldName": "icon",
50193
- "inheritedFrom": {
50194
- "name": "ZnPanel",
50195
- "module": "src/components/panel/panel.component.ts"
50196
- }
50390
+ "description": "`values`, falling back to the `value` attribute it is built from while that is still pending. A parent\nzn-translation-group syncs its children from its own first update, which runs before theirs, so reading\n`values` alone would see it empty and overwrite the value the server rendered."
50197
50391
  },
50198
50392
  {
50199
- "name": "tabbed",
50200
- "type": {
50201
- "text": "boolean"
50202
- },
50203
- "fieldName": "tabbed",
50204
- "inheritedFrom": {
50205
- "name": "ZnPanel",
50206
- "module": "src/components/panel/panel.component.ts"
50207
- }
50393
+ "kind": "field",
50394
+ "name": "handleLanguageSelect",
50395
+ "privacy": "private",
50396
+ "description": "The select's own change and input events are stopped here: they describe the language being browsed, not the\ntranslation being edited, and a consumer listening on zn-translations reads either as a value change."
50208
50397
  },
50209
50398
  {
50210
- "name": "header-borderless",
50211
- "type": {
50212
- "text": "boolean"
50213
- },
50214
- "fieldName": "headerBorderless",
50215
- "inheritedFrom": {
50216
- "name": "ZnPanel",
50217
- "module": "src/components/panel/panel.component.ts"
50218
- }
50399
+ "kind": "field",
50400
+ "name": "handleLanguageInput",
50401
+ "privacy": "private"
50219
50402
  },
50220
50403
  {
50221
- "name": "cosmic",
50222
- "type": {
50223
- "text": "boolean"
50224
- },
50225
- "fieldName": "cosmic",
50226
- "inheritedFrom": {
50227
- "name": "ZnPanel",
50228
- "module": "src/components/panel/panel.component.ts"
50229
- }
50404
+ "kind": "field",
50405
+ "name": "switchLanguage",
50406
+ "privacy": "private",
50407
+ "description": "The language shown in the field, without touching `values`."
50230
50408
  },
50231
50409
  {
50232
- "name": "flush",
50233
- "type": {
50234
- "text": "boolean"
50235
- },
50236
- "fieldName": "flush",
50237
- "inheritedFrom": {
50238
- "name": "ZnPanel",
50239
- "module": "src/components/panel/panel.component.ts"
50240
- }
50410
+ "kind": "field",
50411
+ "name": "handleValueUpdate",
50412
+ "privacy": "private"
50241
50413
  },
50242
50414
  {
50243
- "name": "flush-x",
50244
- "type": {
50245
- "text": "boolean"
50246
- },
50247
- "fieldName": "flushX",
50248
- "inheritedFrom": {
50249
- "name": "ZnPanel",
50250
- "module": "src/components/panel/panel.component.ts"
50251
- }
50415
+ "kind": "method",
50416
+ "name": "updateValue",
50417
+ "privacy": "private"
50252
50418
  },
50253
50419
  {
50254
- "name": "flush-y",
50255
- "type": {
50256
- "text": "boolean"
50257
- },
50258
- "fieldName": "flushY",
50259
- "inheritedFrom": {
50260
- "name": "ZnPanel",
50261
- "module": "src/components/panel/panel.component.ts"
50262
- }
50420
+ "kind": "field",
50421
+ "name": "handleKeyDown",
50422
+ "privacy": "private"
50263
50423
  },
50264
50424
  {
50265
- "name": "flush-footer",
50266
- "type": {
50267
- "text": "boolean"
50268
- },
50269
- "fieldName": "flushFooter",
50270
- "inheritedFrom": {
50271
- "name": "ZnPanel",
50272
- "module": "src/components/panel/panel.component.ts"
50273
- }
50425
+ "kind": "field",
50426
+ "name": "handleSubmit",
50427
+ "privacy": "private"
50274
50428
  },
50275
50429
  {
50276
- "name": "transparent",
50277
- "type": {
50278
- "text": "boolean"
50279
- },
50280
- "fieldName": "transparent",
50281
- "inheritedFrom": {
50282
- "name": "ZnPanel",
50283
- "module": "src/components/panel/panel.component.ts"
50284
- }
50430
+ "kind": "method",
50431
+ "name": "renderField",
50432
+ "privacy": "private",
50433
+ "parameters": [
50434
+ {
50435
+ "name": "value",
50436
+ "type": {
50437
+ "text": "string"
50438
+ }
50439
+ },
50440
+ {
50441
+ "name": "placeholder",
50442
+ "type": {
50443
+ "text": "string"
50444
+ }
50445
+ },
50446
+ {
50447
+ "name": "isRTL",
50448
+ "type": {
50449
+ "text": "boolean"
50450
+ }
50451
+ }
50452
+ ],
50453
+ "description": "The control the active language's translation is edited through."
50285
50454
  },
50286
50455
  {
50287
- "name": "shadow",
50288
- "type": {
50289
- "text": "boolean"
50456
+ "kind": "method",
50457
+ "name": "isRTLLanguage",
50458
+ "privacy": "private",
50459
+ "return": {
50460
+ "type": {
50461
+ "text": "boolean"
50462
+ }
50290
50463
  },
50291
- "fieldName": "shadow",
50292
- "inheritedFrom": {
50293
- "name": "ZnPanel",
50294
- "module": "src/components/panel/panel.component.ts"
50295
- }
50296
- }
50297
- ],
50298
- "superclass": {
50299
- "name": "ZnPanel",
50300
- "module": "/src/components/panel/panel.component"
50301
- },
50302
- "summary": "Puts several zn-translations fields behind one language select, so a whole form's worth of copy is\ntranslated a language at a time.",
50303
- "tagNameWithoutPrefix": "translation-group",
50304
- "tagName": "zn-translation-group",
50305
- "customElement": true,
50306
- "jsDoc": "/**\n * @summary Puts several zn-translations fields behind one language select, so a whole form's worth of copy is\n * translated a language at a time.\n * @documentation https://zinc.style/components/translation-group\n * @status experimental\n * @since 1.0\n *\n * The fields sit in a `zn-form-group`, so the caption, help text and the language select share its label column and\n * the fields line up with every other form group around them. Choosing a language switches every child at once, and\n * each child hides its own select while it is in a group — `grouped` is set on them here.\n *\n * The select is searchable. Each option holds its language code as its value, so typing `de` finds German without the\n * code being on show.\n *\n * Closed, the select carries how many target languages are done — `1/5`. Its options each carry a chip aggregated\n * across the children:\n *\n * - `Translated` — every child has a value for it\n * - `Partial` — only some children do\n * - `English` — none do, so all of them fall back to the English text\n *\n * `Empty` replaces the last of those for English itself, which has nothing to fall back to. English is the source\n * rather than a translation, so it is also left out of the `n of m translated` count beside the label.\n *\n * The children own their values; this component only chooses which language is shown and reports on what they hold.\n * It reads them back on every child `zn-change`, so the chips and the count follow an edit as it is typed.\n *\n * Extends `zn-panel`, so `caption`, `flush`, `transparent` and the `footer` slot behave as they do there. Nested\n * inside another panel, add `inline` to drop the chrome and keep the fields aligned with the surrounding form.\n *\n * @dependency zn-chip\n * @dependency zn-form-group\n * @dependency zn-option\n * @dependency zn-select\n *\n * @event zn-language-change - Emitted when the active language changes. Detail: `{ language: string }`.\n *\n * @slot - The `zn-translations` fields the select drives.\n * @slot actions - Buttons for the bottom of the panel, on the white body rather than the grey footer. They sit on\n * the right, as zinc's form action rows do; `align=\"start\"` moves one to the left. Write them in the order they\n * should be read — the sides are set by CSS ordering, so markup order is what a keyboard follows.\n * @slot footer - Content displayed in the grey panel footer.\n *\n * @csspart base - The component's base wrapper.\n * @csspart form-group - The form group holding the caption, the language select and the fields.\n * @csspart actions - The row of buttons at the bottom of the body.\n * @csspart language-field - The select that chooses the language every child is editing, in the group's chip slot.\n * @csspart language-select - The select itself.\n */",
50307
- "documentation": "https://zinc.style/components/translation-group",
50308
- "status": "experimental",
50309
- "since": "1.0",
50310
- "dependencies": [
50311
- "zn-chip",
50312
- "zn-form-group",
50313
- "zn-option",
50314
- "zn-select"
50315
- ],
50316
- "cssProperties": [
50317
- {
50318
- "description": "The flex-basis of the panel. Can be set using the basis-px attribute.",
50319
- "name": "--zn-panel-basis",
50320
- "inheritedFrom": {
50321
- "name": "ZnPanel",
50322
- "module": "src/components/panel/panel.component.ts"
50323
- }
50324
- }
50325
- ]
50326
- }
50327
- ],
50328
- "exports": [
50329
- {
50330
- "kind": "js",
50331
- "name": "default",
50332
- "declaration": {
50333
- "name": "ZnTranslationGroup",
50334
- "module": "components/translation-group/translation-group.js"
50335
- }
50336
- }
50337
- ]
50338
- },
50339
- {
50340
- "kind": "javascript-module",
50341
- "path": "components/translations/translations.js",
50342
- "declarations": [
50343
- {
50344
- "kind": "class",
50345
- "description": "",
50346
- "name": "ZnTranslations",
50347
- "cssParts": [
50348
- {
50349
- "description": "The form control that wraps the label, the language select, the field and the help text.",
50350
- "name": "form-control"
50351
- },
50352
- {
50353
- "description": "The label's wrapper.",
50354
- "name": "form-control-label"
50355
- },
50356
- {
50357
- "description": "The wrapper around the field being edited.",
50358
- "name": "form-control-input"
50359
- },
50360
- {
50361
- "description": "The help text's wrapper.",
50362
- "name": "form-control-help-text"
50363
- },
50364
- {
50365
- "description": "The select that chooses the language being edited.",
50366
- "name": "language-select"
50464
+ "parameters": [
50465
+ {
50466
+ "name": "languageCode",
50467
+ "type": {
50468
+ "text": "string"
50469
+ }
50470
+ }
50471
+ ],
50472
+ "description": "Arabic and Hebrew read right to left, so the field's `dir` follows the language being edited."
50367
50473
  }
50368
50474
  ],
50369
- "slots": [
50475
+ "events": [
50370
50476
  {
50371
- "description": "The field's label. Alternatively, use the `label` attribute.",
50372
- "name": "label"
50477
+ "description": "Emitted when a translation's value changes.",
50478
+ "name": "zn-change"
50373
50479
  },
50374
50480
  {
50375
- "description": "Text describing how to fill the field in, shown below it and shared by every language. Alternatively, use the `help-text` attribute.",
50376
- "name": "help-text"
50481
+ "description": "Emitted when a translation receives input.",
50482
+ "name": "zn-input"
50377
50483
  }
50378
50484
  ],
50379
- "members": [
50380
- {
50381
- "kind": "field",
50382
- "name": "dependencies",
50383
- "type": {
50384
- "text": "object"
50385
- },
50386
- "static": true,
50387
- "default": "{ 'zn-chip': ZnChip, 'zn-inline-edit': ZnInlineEdit, 'zn-input': ZnInput, 'zn-option': ZnOption, 'zn-select': ZnSelect, 'zn-textarea': ZnTextarea }"
50388
- },
50389
- {
50390
- "kind": "field",
50391
- "name": "formControlController",
50392
- "type": {
50393
- "text": "FormControlController"
50394
- },
50395
- "privacy": "private",
50396
- "readonly": true,
50397
- "default": "new FormControlController(this)"
50398
- },
50399
- {
50400
- "kind": "field",
50401
- "name": "hasSlotController",
50402
- "privacy": "private",
50403
- "readonly": true,
50404
- "default": "new HasSlotController(this, 'label', 'help-text')"
50405
- },
50485
+ "attributes": [
50406
50486
  {
50407
- "kind": "field",
50408
50487
  "name": "name",
50409
50488
  "type": {
50410
50489
  "text": "string"
50411
50490
  },
50412
50491
  "default": "''",
50413
50492
  "description": "The name submitted with the form.",
50414
- "attribute": "name"
50493
+ "fieldName": "name"
50415
50494
  },
50416
50495
  {
50417
- "kind": "field",
50418
50496
  "name": "value",
50419
50497
  "type": {
50420
50498
  "text": "string"
50421
50499
  },
50422
50500
  "default": "'{\"en\":\"\"}'",
50423
50501
  "description": "The translations as a JSON object keyed by language code. The mirror of `values` in attribute form.",
50424
- "attribute": "value"
50502
+ "fieldName": "value"
50425
50503
  },
50426
50504
  {
50427
- "kind": "field",
50428
50505
  "name": "label",
50429
50506
  "type": {
50430
50507
  "text": "string"
50431
50508
  },
50432
50509
  "default": "''",
50433
50510
  "description": "The label shown above the field. If you need HTML, use the `label` slot instead.",
50434
- "attribute": "label"
50511
+ "fieldName": "label"
50435
50512
  },
50436
50513
  {
50437
- "kind": "field",
50438
- "name": "helpText",
50514
+ "name": "help-text",
50439
50515
  "type": {
50440
50516
  "text": "string"
50441
50517
  },
50442
50518
  "default": "''",
50443
50519
  "description": "Text shown below the field, describing how to fill it in. Applies to every language. If you need HTML, use the\n`help-text` slot instead.",
50444
- "attribute": "help-text"
50520
+ "fieldName": "helpText"
50445
50521
  },
50446
50522
  {
50447
- "kind": "field",
50448
50523
  "name": "disabled",
50449
50524
  "type": {
50450
50525
  "text": "boolean"
50451
50526
  },
50452
50527
  "default": "false",
50453
50528
  "description": "Disables editing in every language.",
50454
- "attribute": "disabled",
50455
- "reflects": true
50529
+ "fieldName": "disabled"
50456
50530
  },
50457
50531
  {
50458
- "kind": "field",
50459
50532
  "name": "required",
50460
50533
  "type": {
50461
50534
  "text": "boolean"
50462
50535
  },
50463
50536
  "default": "false",
50464
50537
  "description": "Marks the label required. Validity is not enforced per language.",
50465
- "attribute": "required",
50466
- "reflects": true
50538
+ "fieldName": "required"
50467
50539
  },
50468
50540
  {
50469
- "kind": "field",
50470
50541
  "name": "flush",
50471
50542
  "type": {
50472
50543
  "text": "boolean"
50473
50544
  },
50474
50545
  "default": "false",
50475
50546
  "description": "Removes the component's own padding.",
50476
- "attribute": "flush",
50477
- "reflects": true
50547
+ "fieldName": "flush"
50478
50548
  },
50479
50549
  {
50480
- "kind": "field",
50481
- "name": "inputType",
50550
+ "name": "input-type",
50482
50551
  "type": {
50483
50552
  "text": "'text' | 'number' | 'textarea'"
50484
50553
  },
50485
50554
  "default": "'text'",
50486
50555
  "description": "The control each translation is edited through.",
50487
- "attribute": "input-type"
50556
+ "fieldName": "inputType"
50488
50557
  },
50489
50558
  {
50490
- "kind": "field",
50491
- "name": "textareaRows",
50559
+ "name": "textarea-rows",
50492
50560
  "type": {
50493
50561
  "text": "number | undefined"
50494
50562
  },
50495
50563
  "description": "Rows of the textarea, when `input-type` is `textarea`.",
50496
- "attribute": "textarea-rows"
50564
+ "fieldName": "textareaRows"
50497
50565
  },
50498
50566
  {
50499
- "kind": "field",
50500
- "name": "inlineEdit",
50567
+ "name": "inline-edit",
50501
50568
  "type": {
50502
50569
  "text": "boolean"
50503
50570
  },
50504
50571
  "default": "false",
50505
50572
  "description": "Edits the translation through a `zn-inline-edit` — the value reads as text until it is clicked — rather than a\nplain input or textarea.",
50506
- "attribute": "inline-edit",
50507
- "reflects": true
50573
+ "fieldName": "inlineEdit"
50508
50574
  },
50509
50575
  {
50510
- "kind": "field",
50511
- "name": "slashItems",
50576
+ "name": "slash-items",
50512
50577
  "type": {
50513
50578
  "text": "SlashMenuItem[]"
50514
50579
  },
50515
50580
  "default": "[]",
50516
50581
  "description": "Quick insertions offered by the slash menu on `text` and `textarea` inputs. Accepts a JSON array of items, or\nthe shorthand `Brand name={{BRAND_NAME}}, Support email={{SUPPORT_EMAIL}}`. Every language shares the list.",
50517
- "attribute": "slash-items"
50582
+ "fieldName": "slashItems"
50518
50583
  },
50519
50584
  {
50520
- "kind": "field",
50521
- "name": "slashPreset",
50585
+ "name": "slash-preset",
50522
50586
  "type": {
50523
50587
  "text": "string"
50524
50588
  },
50525
50589
  "default": "''",
50526
50590
  "description": "Names of item sets registered with `registerSlashMenuPreset`, comma separated.",
50527
- "attribute": "slash-preset"
50591
+ "fieldName": "slashPreset"
50528
50592
  },
50529
50593
  {
50530
- "kind": "field",
50531
- "name": "slashTrigger",
50594
+ "name": "slash-trigger",
50532
50595
  "type": {
50533
50596
  "text": "string"
50534
50597
  },
50535
50598
  "default": "'/'",
50536
50599
  "description": "The characters that open the slash menu.",
50537
- "attribute": "slash-trigger"
50600
+ "fieldName": "slashTrigger"
50538
50601
  },
50539
50602
  {
50540
- "kind": "field",
50541
- "name": "slashHeading",
50603
+ "name": "slash-heading",
50542
50604
  "type": {
50543
50605
  "text": "string"
50544
50606
  },
50545
50607
  "default": "'Insert'",
50546
50608
  "description": "The name the slash menu's list is announced by.",
50547
- "attribute": "slash-heading"
50609
+ "fieldName": "slashHeading"
50548
50610
  },
50549
50611
  {
50550
- "kind": "field",
50551
- "name": "slashHideKeys",
50612
+ "name": "slash-hide-keys",
50552
50613
  "type": {
50553
50614
  "text": "boolean"
50554
50615
  },
50555
50616
  "default": "false",
50556
50617
  "description": "Hides the insertion keys normally shown against the slash menu's items.",
50557
- "attribute": "slash-hide-keys"
50618
+ "fieldName": "slashHideKeys"
50558
50619
  },
50559
50620
  {
50560
- "kind": "field",
50561
- "name": "slashRecentKey",
50621
+ "name": "slash-recent-key",
50562
50622
  "type": {
50563
50623
  "text": "string"
50564
50624
  },
50565
50625
  "default": "''",
50566
50626
  "description": "Lists the slash menu items most recently chosen here above the rest, remembered under this key.",
50567
- "attribute": "slash-recent-key"
50568
- },
50569
- {
50570
- "kind": "field",
50571
- "name": "slashItemsProvider",
50572
- "type": {
50573
- "text": "(query: string) => SlashMenuItem[] | Promise<SlashMenuItem[]> | undefined"
50574
- },
50575
- "description": "Resolves additional slash menu items each time the menu opens. JavaScript only."
50627
+ "fieldName": "slashRecentKey"
50576
50628
  },
50577
50629
  {
50578
- "kind": "field",
50579
50630
  "name": "grouped",
50580
50631
  "type": {
50581
50632
  "text": "boolean"
50582
50633
  },
50583
50634
  "default": "false",
50584
50635
  "description": "Hides this component's own language select and defers the choice to a parent zn-translation-group. The group sets\nthis on its children itself.",
50585
- "attribute": "grouped",
50586
- "reflects": true
50636
+ "fieldName": "grouped"
50587
50637
  },
50588
50638
  {
50589
- "kind": "field",
50590
50639
  "name": "languages",
50591
50640
  "type": {
50592
50641
  "text": "Record<string, string>"
50593
50642
  },
50594
50643
  "default": "{ 'en': 'EN' }",
50595
50644
  "description": "The languages on offer, as language code to display name — `{\"en\": \"English\", \"fr\": \"French\"}`. Writing the code\nas the name (`{\"en\": \"EN\"}`) is also accepted. `en` is the language every other one falls back to.",
50596
- "attribute": "languages"
50645
+ "fieldName": "languages"
50597
50646
  },
50598
50647
  {
50599
- "kind": "field",
50600
50648
  "name": "values",
50601
50649
  "type": {
50602
50650
  "text": "Record<string, string>"
50603
50651
  },
50604
50652
  "default": "{}",
50605
50653
  "description": "The translations as an object keyed by language code. The mirror of `value` in property form.",
50606
- "attribute": "values"
50654
+ "fieldName": "values"
50655
+ }
50656
+ ],
50657
+ "superclass": {
50658
+ "name": "ZincElement",
50659
+ "module": "/src/internal/zinc-element"
50660
+ },
50661
+ "summary": "Collects one piece of text in several languages, one language at a time.",
50662
+ "tagNameWithoutPrefix": "translations",
50663
+ "tagName": "zn-translations",
50664
+ "customElement": true,
50665
+ "jsDoc": "/**\n * @summary Collects one piece of text in several languages, one language at a time.\n * @documentation https://zinc.style/components/translations\n * @status experimental\n * @since 1.0\n *\n * A select above the field chooses the language being edited. Closed, it carries how many languages are translated —\n * `1/5`; open, every language it offers carries a chip saying whether it has a translation of its own or falls back\n * to English. Blank languages fall back to English at render\n * time, so a blank field shows the English text as its placeholder rather than looking empty.\n *\n * The value submitted is a JSON object keyed by language code. A language stays out of it until it is typed into, so\n * browsing the languages does not pad the payload with empty translations.\n *\n * Put several of these in a `zn-translation-group` to have one select drive all of them.\n *\n * @dependency zn-chip\n * @dependency zn-inline-edit\n * @dependency zn-input\n * @dependency zn-option\n * @dependency zn-select\n * @dependency zn-textarea\n *\n * @slot label - The field's label. Alternatively, use the `label` attribute.\n * @slot help-text - Text describing how to fill the field in, shown below it and shared by every language.\n * Alternatively, use the `help-text` attribute.\n *\n * @event zn-change - Emitted when a translation's value changes.\n * @event zn-input - Emitted when a translation receives input.\n *\n * @csspart form-control - The form control that wraps the label, the language select, the field and the help text.\n * @csspart form-control-label - The label's wrapper.\n * @csspart form-control-input - The wrapper around the field being edited.\n * @csspart form-control-help-text - The help text's wrapper.\n * @csspart language-select - The select that chooses the language being edited.\n */",
50666
+ "documentation": "https://zinc.style/components/translations",
50667
+ "status": "experimental",
50668
+ "since": "1.0",
50669
+ "dependencies": [
50670
+ "zn-chip",
50671
+ "zn-inline-edit",
50672
+ "zn-input",
50673
+ "zn-option",
50674
+ "zn-select",
50675
+ "zn-textarea"
50676
+ ]
50677
+ }
50678
+ ],
50679
+ "exports": [
50680
+ {
50681
+ "kind": "js",
50682
+ "name": "default",
50683
+ "declaration": {
50684
+ "name": "ZnTranslations",
50685
+ "module": "components/translations/translations.js"
50686
+ }
50687
+ }
50688
+ ]
50689
+ },
50690
+ {
50691
+ "kind": "javascript-module",
50692
+ "path": "components/translation-group/translation-group.js",
50693
+ "declarations": [
50694
+ {
50695
+ "kind": "class",
50696
+ "description": "",
50697
+ "name": "ZnTranslationGroup",
50698
+ "cssParts": [
50699
+ {
50700
+ "description": "The component's base wrapper.",
50701
+ "name": "base",
50702
+ "inheritedFrom": {
50703
+ "name": "ZnPanel",
50704
+ "module": "src/components/panel/panel.component.ts"
50705
+ }
50706
+ },
50707
+ {
50708
+ "description": "The form group holding the caption, the language select and the fields.",
50709
+ "name": "form-group"
50710
+ },
50711
+ {
50712
+ "description": "The row of buttons at the bottom of the body.",
50713
+ "name": "actions"
50607
50714
  },
50715
+ {
50716
+ "description": "The select that chooses the language every child is editing, in the group's chip slot.",
50717
+ "name": "language-field"
50718
+ },
50719
+ {
50720
+ "description": "The select itself.",
50721
+ "name": "language-select"
50722
+ }
50723
+ ],
50724
+ "slots": [
50725
+ {
50726
+ "description": "The `zn-translations` fields the select drives.",
50727
+ "name": "",
50728
+ "inheritedFrom": {
50729
+ "name": "ZnPanel",
50730
+ "module": "src/components/panel/panel.component.ts"
50731
+ }
50732
+ },
50733
+ {
50734
+ "description": "Buttons for the bottom of the panel, on the white body rather than the grey footer. They sit on the right, as zinc's form action rows do; `align=\"start\"` moves one to the left. Write them in the order they should be read — the sides are set by CSS ordering, so markup order is what a keyboard follows.",
50735
+ "name": "actions",
50736
+ "inheritedFrom": {
50737
+ "name": "ZnPanel",
50738
+ "module": "src/components/panel/panel.component.ts"
50739
+ }
50740
+ },
50741
+ {
50742
+ "description": "Content displayed in the grey panel footer.",
50743
+ "name": "footer",
50744
+ "inheritedFrom": {
50745
+ "name": "ZnPanel",
50746
+ "module": "src/components/panel/panel.component.ts"
50747
+ }
50748
+ }
50749
+ ],
50750
+ "members": [
50608
50751
  {
50609
50752
  "kind": "field",
50610
- "name": "defaultValue",
50753
+ "name": "dependencies",
50611
50754
  "type": {
50612
- "text": "string"
50755
+ "text": "object"
50613
50756
  },
50614
- "default": "'{\"en\":\"\"}'",
50615
- "description": "The serialized translations a form reset restores. Taken from the `value` attribute where there is one."
50757
+ "static": true,
50758
+ "default": "{ 'zn-chip': ZnChip, 'zn-form-group': ZnFormGroup, 'zn-option': ZnOption, 'zn-select': ZnSelect }"
50616
50759
  },
50617
50760
  {
50618
50761
  "kind": "field",
50619
- "name": "_activeLanguage",
50620
- "type": {
50621
- "text": "string"
50622
- },
50762
+ "name": "_slotController",
50623
50763
  "privacy": "private",
50624
- "default": "'en'"
50764
+ "readonly": true,
50765
+ "default": "new HasSlotController(this, 'actions', 'footer')"
50625
50766
  },
50626
50767
  {
50627
50768
  "kind": "field",
50628
- "name": "validity",
50769
+ "name": "label",
50629
50770
  "type": {
50630
- "text": "ValidityState"
50771
+ "text": "string"
50631
50772
  },
50632
- "readonly": true
50773
+ "default": "''",
50774
+ "description": "The form group's label. An alias for the inherited `caption`, which wins where both are set.",
50775
+ "attribute": "label"
50633
50776
  },
50634
50777
  {
50635
50778
  "kind": "field",
50636
- "name": "validationMessage",
50637
- "readonly": true
50638
- },
50639
- {
50640
- "kind": "method",
50641
- "name": "checkValidity"
50642
- },
50643
- {
50644
- "kind": "method",
50645
- "name": "getForm"
50646
- },
50647
- {
50648
- "kind": "method",
50649
- "name": "reportValidity"
50779
+ "name": "helpText",
50780
+ "type": {
50781
+ "text": "string"
50782
+ },
50783
+ "default": "''",
50784
+ "description": "Sits under the label, above the language select, as help text does in any other form group.",
50785
+ "attribute": "help-text"
50650
50786
  },
50651
50787
  {
50652
- "kind": "method",
50653
- "name": "setCustomValidity"
50788
+ "kind": "field",
50789
+ "name": "inline",
50790
+ "type": {
50791
+ "text": "boolean"
50792
+ },
50793
+ "default": "false",
50794
+ "description": "Drops the panel chrome — border, background and padding — so the group reads as a section of the surrounding form\nrather than a panel of its own. For groups nested inside another panel, where the fields would otherwise sit\nindented behind a second border.",
50795
+ "attribute": "inline",
50796
+ "reflects": true
50654
50797
  },
50655
50798
  {
50656
- "kind": "method",
50657
- "name": "setActiveLanguage",
50658
- "privacy": "public",
50659
- "parameters": [
50660
- {
50661
- "name": "language",
50662
- "type": {
50663
- "text": "string"
50664
- }
50665
- }
50666
- ],
50667
- "description": "Sets the active language externally. Used by zn-translation-group. Browsing to a language does not create a key\nfor it — an untouched language stays absent from `values` so it is not submitted as an empty translation."
50799
+ "kind": "field",
50800
+ "name": "languageLabel",
50801
+ "type": {
50802
+ "text": "string"
50803
+ },
50804
+ "default": "'Edit Languages'",
50805
+ "description": "The select's accessible name. Not shown — the caption is what names the section on screen — but read out by a\nscreen reader, which has nothing else to go on once the visible label is gone.",
50806
+ "attribute": "language-label"
50668
50807
  },
50669
50808
  {
50670
- "kind": "method",
50671
- "name": "getActiveLanguage",
50672
- "privacy": "public",
50673
- "return": {
50674
- "type": {
50675
- "text": "string"
50676
- }
50809
+ "kind": "field",
50810
+ "name": "languages",
50811
+ "type": {
50812
+ "text": "Record<string, string>"
50813
+ },
50814
+ "default": "{ 'en': 'EN' }",
50815
+ "description": "The languages on offer, as language code to display name — `{\"en\": \"English\", \"fr\": \"French\"}`. Writing the code\nas the name (`{\"en\": \"EN\"}`) is also accepted. `en` is the language every other one falls back to. Set on every\nchild, so they do not need their own copy.",
50816
+ "attribute": "languages"
50817
+ },
50818
+ {
50819
+ "kind": "field",
50820
+ "name": "_activeLanguage",
50821
+ "type": {
50822
+ "text": "string"
50677
50823
  },
50678
- "description": "Returns the currently active language."
50824
+ "privacy": "private",
50825
+ "default": "'en'",
50826
+ "description": "The language every child is currently editing."
50679
50827
  },
50680
50828
  {
50681
- "kind": "method",
50682
- "name": "addLanguageKey",
50683
- "privacy": "public",
50684
- "parameters": [
50685
- {
50686
- "name": "languageCode",
50687
- "type": {
50688
- "text": "string"
50689
- }
50690
- }
50691
- ],
50692
- "description": "Adds a language key to this component's values if not already present. Used by zn-translation-group."
50829
+ "kind": "field",
50830
+ "name": "_form",
50831
+ "type": {
50832
+ "text": "HTMLFormElement | null"
50833
+ },
50834
+ "privacy": "private",
50835
+ "default": "null"
50693
50836
  },
50694
50837
  {
50695
50838
  "kind": "method",
50696
- "name": "getValueLanguages",
50697
- "privacy": "public",
50839
+ "name": "getAllTranslations",
50840
+ "privacy": "private",
50698
50841
  "return": {
50699
50842
  "type": {
50700
- "text": "string[]"
50843
+ "text": "ZnTranslations[]"
50701
50844
  }
50702
50845
  },
50703
- "description": "Returns all language codes that have values."
50846
+ "description": "The children the select drives. Read live rather than cached, so markup added later is picked up."
50704
50847
  },
50705
50848
  {
50706
50849
  "kind": "method",
50707
- "name": "hasTranslation",
50708
- "privacy": "public",
50709
- "return": {
50710
- "type": {
50711
- "text": "boolean"
50712
- }
50713
- },
50714
- "parameters": [
50715
- {
50716
- "name": "language",
50717
- "type": {
50718
- "text": "string"
50719
- }
50720
- }
50721
- ],
50722
- "description": "Whether the language carries a translation of its own, rather than falling back to English."
50850
+ "name": "syncChildren",
50851
+ "privacy": "private",
50852
+ "description": "Sync grouped state, languages, and active language to all children."
50723
50853
  },
50724
50854
  {
50725
50855
  "kind": "method",
@@ -50727,7 +50857,7 @@
50727
50857
  "privacy": "private",
50728
50858
  "return": {
50729
50859
  "type": {
50730
- "text": "{ type: 'success' | 'error'; label: string }"
50860
+ "text": "{ type: 'success' | 'warning' | 'error'; label: string }"
50731
50861
  }
50732
50862
  },
50733
50863
  "parameters": [
@@ -50738,11 +50868,11 @@
50738
50868
  }
50739
50869
  }
50740
50870
  ],
50741
- "description": "The chip shown against a language, in the select's value and against each of its options."
50871
+ "description": "A language is translated once every child carries a value for it, partial while only some do. The chips and the\ncount are read off the children, so a child's edit has to bring the group back round."
50742
50872
  },
50743
50873
  {
50744
50874
  "kind": "method",
50745
- "name": "languageLabel",
50875
+ "name": "displayName",
50746
50876
  "privacy": "private",
50747
50877
  "return": {
50748
50878
  "type": {
@@ -50761,20 +50891,34 @@
50761
50891
  },
50762
50892
  {
50763
50893
  "kind": "method",
50764
- "name": "pendingValues",
50894
+ "name": "syncChildLanguages",
50765
50895
  "privacy": "private",
50766
- "return": {
50767
- "type": {
50768
- "text": "Record<string, string>"
50896
+ "description": "Children take their language list from the group, so a change to `languages` has to reach them."
50897
+ },
50898
+ {
50899
+ "kind": "field",
50900
+ "name": "handleSlotChange",
50901
+ "privacy": "private"
50902
+ },
50903
+ {
50904
+ "kind": "method",
50905
+ "name": "switchLanguage",
50906
+ "privacy": "private",
50907
+ "parameters": [
50908
+ {
50909
+ "name": "lang",
50910
+ "type": {
50911
+ "text": "string"
50912
+ }
50769
50913
  }
50770
- },
50771
- "description": "`values`, falling back to the `value` attribute it is built from while that is still pending. A parent\nzn-translation-group syncs its children from its own first update, which runs before theirs, so reading\n`values` alone would see it empty and overwrite the value the server rendered."
50914
+ ],
50915
+ "description": "Moves every child onto `lang` and announces it. Does not touch their values."
50772
50916
  },
50773
50917
  {
50774
50918
  "kind": "field",
50775
50919
  "name": "handleLanguageSelect",
50776
50920
  "privacy": "private",
50777
- "description": "The select's own change and input events are stopped here: they describe the language being browsed, not the\ntranslation being edited, and a consumer listening on zn-translations reads either as a value change."
50921
+ "description": "The select's own change and input events describe the language being browsed, not a translation being edited, so\nthey are stopped rather than allowed to reach a consumer listening for a child's value change."
50778
50922
  },
50779
50923
  {
50780
50924
  "kind": "field",
@@ -50783,112 +50927,186 @@
50783
50927
  },
50784
50928
  {
50785
50929
  "kind": "field",
50786
- "name": "switchLanguage",
50930
+ "name": "handleChildChange",
50787
50931
  "privacy": "private",
50788
- "description": "The language shown in the field, without touching `values`."
50932
+ "description": "A child's edit changes which chips the select shows, and the translated count above it."
50789
50933
  },
50790
50934
  {
50791
50935
  "kind": "field",
50792
- "name": "handleValueUpdate",
50793
- "privacy": "private"
50936
+ "name": "handleFormReset",
50937
+ "privacy": "private",
50938
+ "description": "The children restore their own values on the form's reset event without announcing it, and the chips and the\ncount are read off them — so re-read once every listener on that event has run."
50794
50939
  },
50795
50940
  {
50796
- "kind": "method",
50797
- "name": "updateValue",
50798
- "privacy": "private"
50941
+ "kind": "field",
50942
+ "name": "hasSlotController",
50943
+ "privacy": "private",
50944
+ "readonly": true,
50945
+ "default": "new HasSlotController(this, '[default]', 'actions', 'footer')",
50946
+ "inheritedFrom": {
50947
+ "name": "ZnPanel",
50948
+ "module": "components/panel/panel.js"
50949
+ }
50799
50950
  },
50800
50951
  {
50801
50952
  "kind": "field",
50802
- "name": "handleKeyDown",
50803
- "privacy": "private"
50953
+ "name": "basis",
50954
+ "type": {
50955
+ "text": "number"
50956
+ },
50957
+ "attribute": "basis-px",
50958
+ "inheritedFrom": {
50959
+ "name": "ZnPanel",
50960
+ "module": "components/panel/panel.js"
50961
+ }
50804
50962
  },
50805
50963
  {
50806
50964
  "kind": "field",
50807
- "name": "handleSubmit",
50808
- "privacy": "private"
50965
+ "name": "caption",
50966
+ "type": {
50967
+ "text": "string"
50968
+ },
50969
+ "attribute": "caption",
50970
+ "inheritedFrom": {
50971
+ "name": "ZnPanel",
50972
+ "module": "components/panel/panel.js"
50973
+ }
50809
50974
  },
50810
50975
  {
50811
- "kind": "method",
50812
- "name": "renderField",
50813
- "privacy": "private",
50814
- "parameters": [
50815
- {
50816
- "name": "value",
50817
- "type": {
50818
- "text": "string"
50819
- }
50820
- },
50821
- {
50822
- "name": "placeholder",
50823
- "type": {
50824
- "text": "string"
50825
- }
50826
- },
50827
- {
50828
- "name": "isRTL",
50829
- "type": {
50830
- "text": "boolean"
50831
- }
50832
- }
50833
- ],
50834
- "description": "The control the active language's translation is edited through."
50976
+ "kind": "field",
50977
+ "name": "icon",
50978
+ "type": {
50979
+ "text": "string"
50980
+ },
50981
+ "attribute": "icon",
50982
+ "inheritedFrom": {
50983
+ "name": "ZnPanel",
50984
+ "module": "components/panel/panel.js"
50985
+ }
50835
50986
  },
50836
50987
  {
50837
- "kind": "method",
50838
- "name": "isRTLLanguage",
50839
- "privacy": "private",
50840
- "return": {
50841
- "type": {
50842
- "text": "boolean"
50843
- }
50988
+ "kind": "field",
50989
+ "name": "tabbed",
50990
+ "type": {
50991
+ "text": "boolean"
50844
50992
  },
50845
- "parameters": [
50846
- {
50847
- "name": "languageCode",
50848
- "type": {
50849
- "text": "string"
50850
- }
50851
- }
50852
- ],
50853
- "description": "Arabic and Hebrew read right to left, so the field's `dir` follows the language being edited."
50854
- }
50855
- ],
50856
- "events": [
50993
+ "attribute": "tabbed",
50994
+ "inheritedFrom": {
50995
+ "name": "ZnPanel",
50996
+ "module": "components/panel/panel.js"
50997
+ }
50998
+ },
50857
50999
  {
50858
- "description": "Emitted when a translation's value changes.",
50859
- "name": "zn-change"
51000
+ "kind": "field",
51001
+ "name": "headerBorderless",
51002
+ "type": {
51003
+ "text": "boolean"
51004
+ },
51005
+ "attribute": "header-borderless",
51006
+ "inheritedFrom": {
51007
+ "name": "ZnPanel",
51008
+ "module": "components/panel/panel.js"
51009
+ }
50860
51010
  },
50861
51011
  {
50862
- "description": "Emitted when a translation receives input.",
50863
- "name": "zn-input"
50864
- }
50865
- ],
50866
- "attributes": [
51012
+ "kind": "field",
51013
+ "name": "cosmic",
51014
+ "type": {
51015
+ "text": "boolean"
51016
+ },
51017
+ "attribute": "cosmic",
51018
+ "inheritedFrom": {
51019
+ "name": "ZnPanel",
51020
+ "module": "components/panel/panel.js"
51021
+ }
51022
+ },
50867
51023
  {
50868
- "name": "name",
51024
+ "kind": "field",
51025
+ "name": "flush",
50869
51026
  "type": {
50870
- "text": "string"
51027
+ "text": "boolean"
50871
51028
  },
50872
- "default": "''",
50873
- "description": "The name submitted with the form.",
50874
- "fieldName": "name"
51029
+ "attribute": "flush",
51030
+ "inheritedFrom": {
51031
+ "name": "ZnPanel",
51032
+ "module": "components/panel/panel.js"
51033
+ }
50875
51034
  },
50876
51035
  {
50877
- "name": "value",
51036
+ "kind": "field",
51037
+ "name": "flushX",
50878
51038
  "type": {
50879
- "text": "string"
51039
+ "text": "boolean"
50880
51040
  },
50881
- "default": "'{\"en\":\"\"}'",
50882
- "description": "The translations as a JSON object keyed by language code. The mirror of `values` in attribute form.",
50883
- "fieldName": "value"
51041
+ "attribute": "flush-x",
51042
+ "inheritedFrom": {
51043
+ "name": "ZnPanel",
51044
+ "module": "components/panel/panel.js"
51045
+ }
51046
+ },
51047
+ {
51048
+ "kind": "field",
51049
+ "name": "flushY",
51050
+ "type": {
51051
+ "text": "boolean"
51052
+ },
51053
+ "attribute": "flush-y",
51054
+ "inheritedFrom": {
51055
+ "name": "ZnPanel",
51056
+ "module": "components/panel/panel.js"
51057
+ }
51058
+ },
51059
+ {
51060
+ "kind": "field",
51061
+ "name": "flushFooter",
51062
+ "type": {
51063
+ "text": "boolean"
51064
+ },
51065
+ "attribute": "flush-footer",
51066
+ "inheritedFrom": {
51067
+ "name": "ZnPanel",
51068
+ "module": "components/panel/panel.js"
51069
+ }
51070
+ },
51071
+ {
51072
+ "kind": "field",
51073
+ "name": "transparent",
51074
+ "type": {
51075
+ "text": "boolean"
51076
+ },
51077
+ "attribute": "transparent",
51078
+ "inheritedFrom": {
51079
+ "name": "ZnPanel",
51080
+ "module": "components/panel/panel.js"
51081
+ }
50884
51082
  },
51083
+ {
51084
+ "kind": "field",
51085
+ "name": "shadow",
51086
+ "type": {
51087
+ "text": "boolean"
51088
+ },
51089
+ "attribute": "shadow",
51090
+ "inheritedFrom": {
51091
+ "name": "ZnPanel",
51092
+ "module": "components/panel/panel.js"
51093
+ }
51094
+ }
51095
+ ],
51096
+ "events": [
51097
+ {
51098
+ "description": "Emitted when the active language changes. Detail: `{ language: string }`.",
51099
+ "name": "zn-language-change"
51100
+ }
51101
+ ],
51102
+ "attributes": [
50885
51103
  {
50886
51104
  "name": "label",
50887
51105
  "type": {
50888
51106
  "text": "string"
50889
51107
  },
50890
51108
  "default": "''",
50891
- "description": "The label shown above the field. If you need HTML, use the `label` slot instead.",
51109
+ "description": "The form group's label. An alias for the inherited `caption`, which wins where both are set.",
50892
51110
  "fieldName": "label"
50893
51111
  },
50894
51112
  {
@@ -50897,163 +51115,196 @@
50897
51115
  "text": "string"
50898
51116
  },
50899
51117
  "default": "''",
50900
- "description": "Text shown below the field, describing how to fill it in. Applies to every language. If you need HTML, use the\n`help-text` slot instead.",
51118
+ "description": "Sits under the label, above the language select, as help text does in any other form group.",
50901
51119
  "fieldName": "helpText"
50902
51120
  },
50903
51121
  {
50904
- "name": "disabled",
51122
+ "name": "inline",
50905
51123
  "type": {
50906
51124
  "text": "boolean"
50907
51125
  },
50908
51126
  "default": "false",
50909
- "description": "Disables editing in every language.",
50910
- "fieldName": "disabled"
51127
+ "description": "Drops the panel chrome — border, background and padding — so the group reads as a section of the surrounding form\nrather than a panel of its own. For groups nested inside another panel, where the fields would otherwise sit\nindented behind a second border.",
51128
+ "fieldName": "inline"
50911
51129
  },
50912
51130
  {
50913
- "name": "required",
51131
+ "name": "language-label",
50914
51132
  "type": {
50915
- "text": "boolean"
51133
+ "text": "string"
50916
51134
  },
50917
- "default": "false",
50918
- "description": "Marks the label required. Validity is not enforced per language.",
50919
- "fieldName": "required"
51135
+ "default": "'Edit Languages'",
51136
+ "description": "The select's accessible name. Not shown — the caption is what names the section on screen — but read out by a\nscreen reader, which has nothing else to go on once the visible label is gone.",
51137
+ "fieldName": "languageLabel"
50920
51138
  },
50921
51139
  {
50922
- "name": "flush",
51140
+ "name": "languages",
50923
51141
  "type": {
50924
- "text": "boolean"
51142
+ "text": "Record<string, string>"
50925
51143
  },
50926
- "default": "false",
50927
- "description": "Removes the component's own padding.",
50928
- "fieldName": "flush"
51144
+ "default": "{ 'en': 'EN' }",
51145
+ "description": "The languages on offer, as language code to display name — `{\"en\": \"English\", \"fr\": \"French\"}`. Writing the code\nas the name (`{\"en\": \"EN\"}`) is also accepted. `en` is the language every other one falls back to. Set on every\nchild, so they do not need their own copy.",
51146
+ "fieldName": "languages"
50929
51147
  },
50930
51148
  {
50931
- "name": "input-type",
51149
+ "name": "basis-px",
50932
51150
  "type": {
50933
- "text": "'text' | 'number' | 'textarea'"
51151
+ "text": "number"
50934
51152
  },
50935
- "default": "'text'",
50936
- "description": "The control each translation is edited through.",
50937
- "fieldName": "inputType"
51153
+ "fieldName": "basis",
51154
+ "inheritedFrom": {
51155
+ "name": "ZnPanel",
51156
+ "module": "src/components/panel/panel.component.ts"
51157
+ }
50938
51158
  },
50939
51159
  {
50940
- "name": "textarea-rows",
51160
+ "name": "caption",
50941
51161
  "type": {
50942
- "text": "number | undefined"
51162
+ "text": "string"
50943
51163
  },
50944
- "description": "Rows of the textarea, when `input-type` is `textarea`.",
50945
- "fieldName": "textareaRows"
51164
+ "fieldName": "caption",
51165
+ "inheritedFrom": {
51166
+ "name": "ZnPanel",
51167
+ "module": "src/components/panel/panel.component.ts"
51168
+ }
50946
51169
  },
50947
51170
  {
50948
- "name": "inline-edit",
51171
+ "name": "icon",
50949
51172
  "type": {
50950
- "text": "boolean"
51173
+ "text": "string"
50951
51174
  },
50952
- "default": "false",
50953
- "description": "Edits the translation through a `zn-inline-edit` — the value reads as text until it is clicked — rather than a\nplain input or textarea.",
50954
- "fieldName": "inlineEdit"
51175
+ "fieldName": "icon",
51176
+ "inheritedFrom": {
51177
+ "name": "ZnPanel",
51178
+ "module": "src/components/panel/panel.component.ts"
51179
+ }
50955
51180
  },
50956
51181
  {
50957
- "name": "slash-items",
51182
+ "name": "tabbed",
50958
51183
  "type": {
50959
- "text": "SlashMenuItem[]"
51184
+ "text": "boolean"
50960
51185
  },
50961
- "default": "[]",
50962
- "description": "Quick insertions offered by the slash menu on `text` and `textarea` inputs. Accepts a JSON array of items, or\nthe shorthand `Brand name={{BRAND_NAME}}, Support email={{SUPPORT_EMAIL}}`. Every language shares the list.",
50963
- "fieldName": "slashItems"
51186
+ "fieldName": "tabbed",
51187
+ "inheritedFrom": {
51188
+ "name": "ZnPanel",
51189
+ "module": "src/components/panel/panel.component.ts"
51190
+ }
50964
51191
  },
50965
51192
  {
50966
- "name": "slash-preset",
51193
+ "name": "header-borderless",
50967
51194
  "type": {
50968
- "text": "string"
51195
+ "text": "boolean"
50969
51196
  },
50970
- "default": "''",
50971
- "description": "Names of item sets registered with `registerSlashMenuPreset`, comma separated.",
50972
- "fieldName": "slashPreset"
51197
+ "fieldName": "headerBorderless",
51198
+ "inheritedFrom": {
51199
+ "name": "ZnPanel",
51200
+ "module": "src/components/panel/panel.component.ts"
51201
+ }
50973
51202
  },
50974
51203
  {
50975
- "name": "slash-trigger",
51204
+ "name": "cosmic",
50976
51205
  "type": {
50977
- "text": "string"
51206
+ "text": "boolean"
50978
51207
  },
50979
- "default": "'/'",
50980
- "description": "The characters that open the slash menu.",
50981
- "fieldName": "slashTrigger"
51208
+ "fieldName": "cosmic",
51209
+ "inheritedFrom": {
51210
+ "name": "ZnPanel",
51211
+ "module": "src/components/panel/panel.component.ts"
51212
+ }
50982
51213
  },
50983
51214
  {
50984
- "name": "slash-heading",
51215
+ "name": "flush",
50985
51216
  "type": {
50986
- "text": "string"
51217
+ "text": "boolean"
50987
51218
  },
50988
- "default": "'Insert'",
50989
- "description": "The name the slash menu's list is announced by.",
50990
- "fieldName": "slashHeading"
51219
+ "fieldName": "flush",
51220
+ "inheritedFrom": {
51221
+ "name": "ZnPanel",
51222
+ "module": "src/components/panel/panel.component.ts"
51223
+ }
50991
51224
  },
50992
51225
  {
50993
- "name": "slash-hide-keys",
51226
+ "name": "flush-x",
50994
51227
  "type": {
50995
51228
  "text": "boolean"
50996
51229
  },
50997
- "default": "false",
50998
- "description": "Hides the insertion keys normally shown against the slash menu's items.",
50999
- "fieldName": "slashHideKeys"
51230
+ "fieldName": "flushX",
51231
+ "inheritedFrom": {
51232
+ "name": "ZnPanel",
51233
+ "module": "src/components/panel/panel.component.ts"
51234
+ }
51000
51235
  },
51001
51236
  {
51002
- "name": "slash-recent-key",
51237
+ "name": "flush-y",
51003
51238
  "type": {
51004
- "text": "string"
51239
+ "text": "boolean"
51005
51240
  },
51006
- "default": "''",
51007
- "description": "Lists the slash menu items most recently chosen here above the rest, remembered under this key.",
51008
- "fieldName": "slashRecentKey"
51241
+ "fieldName": "flushY",
51242
+ "inheritedFrom": {
51243
+ "name": "ZnPanel",
51244
+ "module": "src/components/panel/panel.component.ts"
51245
+ }
51009
51246
  },
51010
51247
  {
51011
- "name": "grouped",
51248
+ "name": "flush-footer",
51012
51249
  "type": {
51013
51250
  "text": "boolean"
51014
51251
  },
51015
- "default": "false",
51016
- "description": "Hides this component's own language select and defers the choice to a parent zn-translation-group. The group sets\nthis on its children itself.",
51017
- "fieldName": "grouped"
51252
+ "fieldName": "flushFooter",
51253
+ "inheritedFrom": {
51254
+ "name": "ZnPanel",
51255
+ "module": "src/components/panel/panel.component.ts"
51256
+ }
51018
51257
  },
51019
51258
  {
51020
- "name": "languages",
51259
+ "name": "transparent",
51021
51260
  "type": {
51022
- "text": "Record<string, string>"
51261
+ "text": "boolean"
51023
51262
  },
51024
- "default": "{ 'en': 'EN' }",
51025
- "description": "The languages on offer, as language code to display name — `{\"en\": \"English\", \"fr\": \"French\"}`. Writing the code\nas the name (`{\"en\": \"EN\"}`) is also accepted. `en` is the language every other one falls back to.",
51026
- "fieldName": "languages"
51263
+ "fieldName": "transparent",
51264
+ "inheritedFrom": {
51265
+ "name": "ZnPanel",
51266
+ "module": "src/components/panel/panel.component.ts"
51267
+ }
51027
51268
  },
51028
51269
  {
51029
- "name": "values",
51270
+ "name": "shadow",
51030
51271
  "type": {
51031
- "text": "Record<string, string>"
51272
+ "text": "boolean"
51032
51273
  },
51033
- "default": "{}",
51034
- "description": "The translations as an object keyed by language code. The mirror of `value` in property form.",
51035
- "fieldName": "values"
51274
+ "fieldName": "shadow",
51275
+ "inheritedFrom": {
51276
+ "name": "ZnPanel",
51277
+ "module": "src/components/panel/panel.component.ts"
51278
+ }
51036
51279
  }
51037
51280
  ],
51038
51281
  "superclass": {
51039
- "name": "ZincElement",
51040
- "module": "/src/internal/zinc-element"
51282
+ "name": "ZnPanel",
51283
+ "module": "/src/components/panel/panel.component"
51041
51284
  },
51042
- "summary": "Collects one piece of text in several languages, one language at a time.",
51043
- "tagNameWithoutPrefix": "translations",
51044
- "tagName": "zn-translations",
51285
+ "summary": "Puts several zn-translations fields behind one language select, so a whole form's worth of copy is\ntranslated a language at a time.",
51286
+ "tagNameWithoutPrefix": "translation-group",
51287
+ "tagName": "zn-translation-group",
51045
51288
  "customElement": true,
51046
- "jsDoc": "/**\n * @summary Collects one piece of text in several languages, one language at a time.\n * @documentation https://zinc.style/components/translations\n * @status experimental\n * @since 1.0\n *\n * A select above the field chooses the language being edited. Closed, it carries how many languages are translated —\n * `1/5`; open, every language it offers carries a chip saying whether it has a translation of its own or falls back\n * to English. Blank languages fall back to English at render\n * time, so a blank field shows the English text as its placeholder rather than looking empty.\n *\n * The value submitted is a JSON object keyed by language code. A language stays out of it until it is typed into, so\n * browsing the languages does not pad the payload with empty translations.\n *\n * Put several of these in a `zn-translation-group` to have one select drive all of them.\n *\n * @dependency zn-chip\n * @dependency zn-inline-edit\n * @dependency zn-input\n * @dependency zn-option\n * @dependency zn-select\n * @dependency zn-textarea\n *\n * @slot label - The field's label. Alternatively, use the `label` attribute.\n * @slot help-text - Text describing how to fill the field in, shown below it and shared by every language.\n * Alternatively, use the `help-text` attribute.\n *\n * @event zn-change - Emitted when a translation's value changes.\n * @event zn-input - Emitted when a translation receives input.\n *\n * @csspart form-control - The form control that wraps the label, the language select, the field and the help text.\n * @csspart form-control-label - The label's wrapper.\n * @csspart form-control-input - The wrapper around the field being edited.\n * @csspart form-control-help-text - The help text's wrapper.\n * @csspart language-select - The select that chooses the language being edited.\n */",
51047
- "documentation": "https://zinc.style/components/translations",
51289
+ "jsDoc": "/**\n * @summary Puts several zn-translations fields behind one language select, so a whole form's worth of copy is\n * translated a language at a time.\n * @documentation https://zinc.style/components/translation-group\n * @status experimental\n * @since 1.0\n *\n * The fields sit in a `zn-form-group`, so the caption, help text and the language select share its label column and\n * the fields line up with every other form group around them. Choosing a language switches every child at once, and\n * each child hides its own select while it is in a group — `grouped` is set on them here.\n *\n * The select is searchable. Each option holds its language code as its value, so typing `de` finds German without the\n * code being on show.\n *\n * Closed, the select carries how many target languages are done `1/5`. Its options each carry a chip aggregated\n * across the children:\n *\n * - `Translated` — every child has a value for it\n * - `Partial` — only some children do\n * - `English` — none do, so all of them fall back to the English text\n *\n * `Empty` replaces the last of those for English itself, which has nothing to fall back to. English is the source\n * rather than a translation, so it is also left out of the `n of m translated` count beside the label.\n *\n * The children own their values; this component only chooses which language is shown and reports on what they hold.\n * It reads them back on every child `zn-change`, so the chips and the count follow an edit as it is typed.\n *\n * Extends `zn-panel`, so `caption`, `flush`, `transparent` and the `footer` slot behave as they do there. Nested\n * inside another panel, add `inline` to drop the chrome and keep the fields aligned with the surrounding form.\n *\n * @dependency zn-chip\n * @dependency zn-form-group\n * @dependency zn-option\n * @dependency zn-select\n *\n * @event zn-language-change - Emitted when the active language changes. Detail: `{ language: string }`.\n *\n * @slot - The `zn-translations` fields the select drives.\n * @slot actions - Buttons for the bottom of the panel, on the white body rather than the grey footer. They sit on\n * the right, as zinc's form action rows do; `align=\"start\"` moves one to the left. Write them in the order they\n * should be read the sides are set by CSS ordering, so markup order is what a keyboard follows.\n * @slot footer - Content displayed in the grey panel footer.\n *\n * @csspart base - The component's base wrapper.\n * @csspart form-group - The form group holding the caption, the language select and the fields.\n * @csspart actions - The row of buttons at the bottom of the body.\n * @csspart language-field - The select that chooses the language every child is editing, in the group's chip slot.\n * @csspart language-select - The select itself.\n */",
51290
+ "documentation": "https://zinc.style/components/translation-group",
51048
51291
  "status": "experimental",
51049
51292
  "since": "1.0",
51050
51293
  "dependencies": [
51051
51294
  "zn-chip",
51052
- "zn-inline-edit",
51053
- "zn-input",
51295
+ "zn-form-group",
51054
51296
  "zn-option",
51055
- "zn-select",
51056
- "zn-textarea"
51297
+ "zn-select"
51298
+ ],
51299
+ "cssProperties": [
51300
+ {
51301
+ "description": "The flex-basis of the panel. Can be set using the basis-px attribute.",
51302
+ "name": "--zn-panel-basis",
51303
+ "inheritedFrom": {
51304
+ "name": "ZnPanel",
51305
+ "module": "src/components/panel/panel.component.ts"
51306
+ }
51307
+ }
51057
51308
  ]
51058
51309
  }
51059
51310
  ],
@@ -51062,8 +51313,8 @@
51062
51313
  "kind": "js",
51063
51314
  "name": "default",
51064
51315
  "declaration": {
51065
- "name": "ZnTranslations",
51066
- "module": "components/translations/translations.js"
51316
+ "name": "ZnTranslationGroup",
51317
+ "module": "components/translation-group/translation-group.js"
51067
51318
  }
51068
51319
  }
51069
51320
  ]
@@ -51364,7 +51615,7 @@
51364
51615
  "package": {
51365
51616
  "name": "@kubex/zinc",
51366
51617
  "description": "A collection of web components for building web applications based off of @shoelace-style/Shoelace",
51367
- "version": "1.1.118",
51618
+ "version": "1.1.120",
51368
51619
  "author": "",
51369
51620
  "license": "MIT"
51370
51621
  }