@panneau/fields 5.0.0-alpha.15 → 5.0.0-alpha.16

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.
Files changed (139) hide show
  1. package/README.md +53 -3
  2. package/dist/address/AddressField.css +44 -0
  3. package/dist/address/AddressField.d.ts +37 -0
  4. package/dist/address/AddressField.d.ts.map +1 -0
  5. package/dist/address/AddressField.js +411 -0
  6. package/dist/address/AddressField.js.map +1 -0
  7. package/dist/address/AddressField.module.js +22 -0
  8. package/dist/address/AddressField.module.js.map +1 -0
  9. package/dist/address/address.d.ts +23 -0
  10. package/dist/address/address.d.ts.map +1 -0
  11. package/dist/address/address.js +58 -0
  12. package/dist/address/address.js.map +1 -0
  13. package/dist/address/index.d.ts +3 -0
  14. package/dist/address/index.d.ts.map +1 -0
  15. package/dist/address/index.js +3 -0
  16. package/dist/color/ColorField.css +9 -0
  17. package/dist/color/ColorField.d.ts +10 -3
  18. package/dist/color/ColorField.d.ts.map +1 -1
  19. package/dist/color/ColorField.js +341 -81
  20. package/dist/color/ColorField.js.map +1 -1
  21. package/dist/color/ColorField.module.js +4 -2
  22. package/dist/color/ColorField.module.js.map +1 -1
  23. package/dist/color/index.d.ts +1 -0
  24. package/dist/color/index.d.ts.map +1 -1
  25. package/dist/color/index.js +3 -1
  26. package/dist/color/palette.d.ts +23 -0
  27. package/dist/color/palette.d.ts.map +1 -0
  28. package/dist/color/palette.js +34 -0
  29. package/dist/color/palette.js.map +1 -0
  30. package/dist/country/CountryField.css +42 -0
  31. package/dist/country/CountryField.d.ts +19 -4
  32. package/dist/country/CountryField.d.ts.map +1 -1
  33. package/dist/country/CountryField.js +355 -82
  34. package/dist/country/CountryField.js.map +1 -1
  35. package/dist/country/CountryField.module.js +20 -0
  36. package/dist/country/CountryField.module.js.map +1 -0
  37. package/dist/country/index.d.ts +1 -1
  38. package/dist/country/index.d.ts.map +1 -1
  39. package/dist/daterange/DateRangeField.css +9 -0
  40. package/dist/daterange/DateRangeField.d.ts +31 -0
  41. package/dist/daterange/DateRangeField.d.ts.map +1 -0
  42. package/dist/daterange/DateRangeField.js +372 -0
  43. package/dist/daterange/DateRangeField.js.map +1 -0
  44. package/dist/daterange/DateRangeField.module.js +12 -0
  45. package/dist/daterange/DateRangeField.module.js.map +1 -0
  46. package/dist/daterange/index.d.ts +3 -0
  47. package/dist/daterange/index.d.ts.map +1 -0
  48. package/dist/daterange/index.js +3 -0
  49. package/dist/daterange/range.d.ts +61 -0
  50. package/dist/daterange/range.d.ts.map +1 -0
  51. package/dist/daterange/range.js +119 -0
  52. package/dist/daterange/range.js.map +1 -0
  53. package/dist/duration/DurationField.css +1 -1
  54. package/dist/duration/DurationField.d.ts +54 -13
  55. package/dist/duration/DurationField.d.ts.map +1 -1
  56. package/dist/duration/DurationField.js +205 -159
  57. package/dist/duration/DurationField.js.map +1 -1
  58. package/dist/duration/DurationField.module.js.map +1 -1
  59. package/dist/duration/index.d.ts +1 -1
  60. package/dist/duration/index.d.ts.map +1 -1
  61. package/dist/duration/index.js +1 -1
  62. package/dist/embed/EmbedField.d.ts +11 -2
  63. package/dist/embed/EmbedField.d.ts.map +1 -1
  64. package/dist/embed/EmbedField.js +179 -116
  65. package/dist/embed/EmbedField.js.map +1 -1
  66. package/dist/link/LinkField.css +12 -0
  67. package/dist/link/LinkField.d.ts +38 -0
  68. package/dist/link/LinkField.d.ts.map +1 -0
  69. package/dist/link/LinkField.js +742 -0
  70. package/dist/link/LinkField.js.map +1 -0
  71. package/dist/link/LinkField.module.js +8 -0
  72. package/dist/link/LinkField.module.js.map +1 -0
  73. package/dist/link/index.d.ts +3 -0
  74. package/dist/link/index.d.ts.map +1 -0
  75. package/dist/link/index.js +3 -0
  76. package/dist/link/link.d.ts +30 -0
  77. package/dist/link/link.d.ts.map +1 -0
  78. package/dist/link/link.js +63 -0
  79. package/dist/link/link.js.map +1 -0
  80. package/dist/link/pages.d.ts +17 -0
  81. package/dist/link/pages.d.ts.map +1 -0
  82. package/dist/link/pages.js +104 -0
  83. package/dist/link/pages.js.map +1 -0
  84. package/dist/location/LocationField.d.ts.map +1 -1
  85. package/dist/location/LocationField.js +9 -85
  86. package/dist/location/LocationField.js.map +1 -1
  87. package/dist/location/nominatim.d.ts +8 -2
  88. package/dist/location/nominatim.d.ts.map +1 -1
  89. package/dist/location/nominatim.js +32 -3
  90. package/dist/location/nominatim.js.map +1 -1
  91. package/dist/location/search.d.ts +10 -0
  92. package/dist/location/search.d.ts.map +1 -0
  93. package/dist/location/search.js +83 -0
  94. package/dist/location/search.js.map +1 -0
  95. package/dist/location/types.d.ts +8 -2
  96. package/dist/location/types.d.ts.map +1 -1
  97. package/dist/money/MoneyField.d.ts +28 -0
  98. package/dist/money/MoneyField.d.ts.map +1 -0
  99. package/dist/money/MoneyField.js +269 -0
  100. package/dist/money/MoneyField.js.map +1 -0
  101. package/dist/money/index.d.ts +3 -0
  102. package/dist/money/index.d.ts.map +1 -0
  103. package/dist/money/index.js +3 -0
  104. package/dist/money/money.d.ts +27 -0
  105. package/dist/money/money.d.ts.map +1 -0
  106. package/dist/money/money.js +56 -0
  107. package/dist/money/money.js.map +1 -0
  108. package/dist/region/RegionField.js +1 -1
  109. package/dist/shared/builtIn.d.ts +3 -1
  110. package/dist/shared/builtIn.d.ts.map +1 -1
  111. package/dist/shared/builtIn.js +18 -8
  112. package/dist/shared/builtIn.js.map +1 -1
  113. package/dist/shared/dates.js +2 -2
  114. package/dist/shared/dates.js.map +1 -1
  115. package/dist/shared/flow.d.ts.map +1 -1
  116. package/dist/shared/flow.js +1 -0
  117. package/dist/shared/flow.js.map +1 -1
  118. package/dist/shared/part.d.ts +26 -0
  119. package/dist/shared/part.d.ts.map +1 -0
  120. package/dist/shared/part.js +64 -0
  121. package/dist/shared/part.js.map +1 -0
  122. package/dist/tel/TelField.css +25 -0
  123. package/dist/tel/TelField.d.ts +14 -2
  124. package/dist/tel/TelField.d.ts.map +1 -1
  125. package/dist/tel/TelField.js +246 -145
  126. package/dist/tel/TelField.js.map +1 -1
  127. package/dist/tel/TelField.module.js +12 -0
  128. package/dist/tel/TelField.module.js.map +1 -0
  129. package/dist/tel/index.d.ts +1 -1
  130. package/dist/tel/index.d.ts.map +1 -1
  131. package/dist/tel/index.js +2 -2
  132. package/dist/tel/phone.d.ts +28 -0
  133. package/dist/tel/phone.d.ts.map +1 -1
  134. package/dist/tel/phone.js +48 -1
  135. package/dist/tel/phone.js.map +1 -1
  136. package/dist/url/UrlField.d.ts.map +1 -1
  137. package/dist/url/UrlField.js +1 -1
  138. package/dist/url/UrlField.js.map +1 -1
  139. package/package.json +24 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"palette.js","names":["Field","ColorPaletteEntry","value","label","color","HEX","isHexColor","test","isRecord","Record","Array","isArray","toColorPalette","palette","flatMap","entry","length","getColorPalette","field","settings","getSwatchColor"],"sources":["../../src/color/palette.ts"],"sourcesContent":["import type { Field } from '@panneau/protocol';\n\n/**\n * A color of a palette (`settings.palette` of a `color` field, decision 0058): `value` is what the\n * field stores, `color` (hexadecimal) draws its swatch, and `label` names it. Without `color`,\n * `value` is a hexadecimal color, which draws itself.\n */\nexport interface ColorPaletteEntry {\n value: string;\n label?: string;\n color?: string;\n}\n\nconst HEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i;\n\n/** Whether a value is a hexadecimal color: `#1d4ed8`, `#fff` or `#1d4ed880`. */\nexport function isHexColor(value: unknown): value is string {\n return typeof value === 'string' && HEX.test(value);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * The colors of a palette, from a field's `settings.palette`: entries with a `value`, and the\n * `label` and `color` they have. `null` when it has none.\n */\nexport function toColorPalette(value: unknown): ColorPaletteEntry[] | null {\n if (!Array.isArray(value)) {\n return null;\n }\n const palette = value.flatMap((entry): ColorPaletteEntry[] =>\n isRecord(entry) && typeof entry.value === 'string' && entry.value !== ''\n ? [\n {\n value: entry.value,\n ...(typeof entry.label === 'string' ? { label: entry.label } : {}),\n ...(isHexColor(entry.color) ? { color: entry.color } : {}),\n },\n ]\n : [],\n );\n return palette.length > 0 ? palette : null;\n}\n\n/** The palette of a `color` field (`settings.palette`), or `null` when it has none. */\nexport function getColorPalette(field: Field | null | undefined): ColorPaletteEntry[] | null {\n return toColorPalette(field?.settings?.palette);\n}\n\n/** The color that draws an entry's swatch: its `color`, or its value when it is hexadecimal. */\nexport function getSwatchColor(entry: ColorPaletteEntry): string | null {\n return entry.color ?? (isHexColor(entry.value) ? entry.value : null);\n}\n"],"mappings":";AAaA,IAAMK,MAAM;;AAGZ,SAAgBC,WAAWJ,OAAiC;CACxD,OAAO,OAAOA,UAAU,YAAYG,IAAIE,KAAKL,KAAK;AACtD;AAEA,SAASM,SAASN,OAAkD;CAChE,OAAO,OAAOA,UAAU,YAAYA,UAAU,QAAQ,CAACQ,MAAMC,QAAQT,KAAK;AAC9E;;;;;AAMA,SAAgBU,eAAeV,OAA4C;CACvE,IAAI,CAACQ,MAAMC,QAAQT,KAAK,GACpB,OAAO;CAEX,MAAMW,UAAUX,MAAMY,SAASC,UAC3BP,SAASO,KAAK,KAAK,OAAOA,MAAMb,UAAU,YAAYa,MAAMb,UAAU,KAChE,CACI;EACIA,OAAOa,MAAMb;EACb,GAAI,OAAOa,MAAMZ,UAAU,WAAW,EAAEA,OAAOY,MAAMZ,MAAM,IAAI,CAAC;EAChE,GAAIG,WAAWS,MAAMX,KAAK,IAAI,EAAEA,OAAOW,MAAMX,MAAM,IAAI,CAAC;CAC5D,CAAC,IAEL,CAAA,CACV;CACA,OAAOS,QAAQG,SAAS,IAAIH,UAAU;AAC1C;;AAGA,SAAgBI,gBAAgBC,OAA6D;CACzF,OAAON,eAAeM,OAAOC,UAAUN,OAAO;AAClD;;AAGA,SAAgBO,eAAeL,OAAyC;CACpE,OAAOA,MAAMX,UAAUE,WAAWS,MAAMb,KAAK,IAAIa,MAAMb,QAAQ;AACnE"}
@@ -0,0 +1,42 @@
1
+ .panneau-country-field-multiple {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--panneau-space-2);
5
+ }
6
+
7
+ .panneau-country-field-countries {
8
+ display: flex;
9
+ flex-wrap: wrap;
10
+ gap: var(--panneau-space-1) var(--panneau-space-2);
11
+ margin: 0;
12
+ padding: 0;
13
+ list-style: none;
14
+ }
15
+
16
+ .panneau-country-field-country,
17
+ .panneau-country-field-fixed-country {
18
+ display: inline-flex;
19
+ align-items: center;
20
+ gap: var(--panneau-space-1);
21
+ min-height: var(--panneau-control-height-sm);
22
+ max-width: 100%;
23
+ padding-inline: var(--panneau-space-3) var(--panneau-space-1);
24
+ font-size: var(--panneau-font-size-sm);
25
+ background-color: var(--panneau-color-surface-sunken);
26
+ border: var(--panneau-border-width) solid var(--panneau-color-border);
27
+ border-radius: var(--panneau-radius-full);
28
+ }
29
+
30
+ .panneau-country-field-fixed-country {
31
+ padding-inline-end: var(--panneau-space-3);
32
+ }
33
+
34
+ .panneau-country-field-flag {
35
+ flex: none;
36
+ }
37
+
38
+ .panneau-country-field-name {
39
+ overflow: hidden;
40
+ text-overflow: ellipsis;
41
+ white-space: nowrap;
42
+ }
@@ -1,5 +1,6 @@
1
1
  import type { FieldEntryProps, FieldProps } from '../shared/types.js';
2
- export interface CountryFieldProps extends FieldProps<string> {
2
+ /** Props of both single and multiple country fields. */
3
+ export interface CountryFieldBaseProps extends Omit<FieldProps<never>, 'value' | 'onChange'> {
3
4
  /** The codes to offer. All countries without it. */
4
5
  countries?: readonly string[];
5
6
  /** Codes shown first, in their order, above the others: `['CA', 'US']`. */
@@ -7,11 +8,25 @@ export interface CountryFieldProps extends FieldProps<string> {
7
8
  placeholder?: string;
8
9
  controlClassName?: string;
9
10
  }
11
+ export interface SingleCountryFieldProps extends CountryFieldBaseProps {
12
+ multiple?: false;
13
+ value?: string | null;
14
+ onChange?: (value: string | null) => void;
15
+ }
16
+ export interface MultipleCountryFieldProps extends CountryFieldBaseProps {
17
+ /** Several countries, in the order they were chosen (decision 0058). */
18
+ multiple: true;
19
+ value?: readonly string[] | null;
20
+ /** Called with the codes. An empty list is `null`. */
21
+ onChange?: (value: string[] | null) => void;
22
+ }
23
+ export type CountryFieldProps = SingleCountryFieldProps | MultipleCountryFieldProps;
10
24
  /**
11
25
  * A country, as its ISO 3166-1 alpha-2 code (`CA`): a combo box of the countries with their flags
12
- * and their names in the user's locale. Typing filters them by name or by code.
26
+ * and their names in the user's locale. Typing filters them by name or by code. With `multiple`,
27
+ * several countries, each removable, in the order they were chosen, and the combo box adds one.
13
28
  */
14
- export declare function CountryField({ countries, preferred, placeholder, ...props }: CountryFieldProps): import("react").JSX.Element;
15
- /** The `country` type: `settings.countries` and `settings.preferred`. */
29
+ export declare function CountryField(props: CountryFieldProps): import("react").JSX.Element;
30
+ /** The `country` type: `multiple`, `settings.countries` and `settings.preferred`. */
16
31
  export declare function CountryFieldEntry(props: FieldEntryProps): import("react").JSX.Element;
17
32
  //# sourceMappingURL=CountryField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CountryField.d.ts","sourceRoot":"","sources":["../../src/country/CountryField.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGnE,MAAM,WAAW,iBAAkB,SAAQ,UAAU,CAAC,MAAM,CAAC;IACzD,oDAAoD;IACpD,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,+BAe9F;AAKD,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,+BAYvD"}
1
+ {"version":3,"file":"CountryField.d.ts","sourceRoot":"","sources":["../../src/country/CountryField.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAInE,wDAAwD;AACxD,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACxF,oDAAoD;IACpD,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IAClE,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,yBAA0B,SAAQ,qBAAqB;IACpE,wEAAwE;IACxE,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACjC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;CAC/C;AAED,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,GAAG,yBAAyB,CAAC;AAEpF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAoHpD;AAKD,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,+BA0BvD"}
@@ -1,87 +1,327 @@
1
1
  import { getFieldProps, getSetting, isString } from "../shared/entry.js";
2
2
  import { messages } from "../shared/messages.js";
3
3
  import { CodeComboBox } from "../shared/CodeComboBox.js";
4
- import { getCountryChoices } from "./countries.js";
4
+ import CountryField_module_default from "./CountryField.module.js";
5
+ import { getCountryChoices, getCountryFlag, getCountryName, isCountryCode } from "./countries.js";
5
6
  import { c } from "react/compiler-runtime";
6
- import { usePanneauIntl } from "@panneau/ui";
7
- import { jsx } from "react/jsx-runtime";
7
+ import { X } from "lucide-react";
8
+ import { Fieldset, IconButton, usePanneauIntl } from "@panneau/ui";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
8
10
  //#region src/country/CountryField.tsx
9
11
  /**
10
12
  * A country, as its ISO 3166-1 alpha-2 code (`CA`): a combo box of the countries with their flags
11
- * and their names in the user's locale. Typing filters them by name or by code.
13
+ * and their names in the user's locale. Typing filters them by name or by code. With `multiple`,
14
+ * several countries, each removable, in the order they were chosen, and the combo box adds one.
12
15
  */
13
- function CountryField(t0) {
14
- const $ = c(23);
15
- let countries;
16
- let placeholder;
17
- let preferred;
18
- let props;
19
- if ($[0] !== t0) {
20
- ({countries, preferred, placeholder, ...props} = t0);
21
- $[0] = t0;
22
- $[1] = countries;
23
- $[2] = placeholder;
24
- $[3] = preferred;
25
- $[4] = props;
26
- } else {
27
- countries = $[1];
28
- placeholder = $[2];
29
- preferred = $[3];
30
- props = $[4];
31
- }
16
+ function CountryField(props) {
17
+ const $ = c(91);
32
18
  const intl = usePanneauIntl();
19
+ const { countries, preferred } = props;
33
20
  let T0;
21
+ let T1;
22
+ let codes;
23
+ let emptyMessage;
24
+ let set;
25
+ let t0;
34
26
  let t1;
27
+ let t10;
28
+ let t11;
29
+ let t12;
30
+ let t13;
31
+ let t14;
32
+ let t15;
33
+ let t16;
34
+ let t17;
35
+ let t18;
36
+ let t19;
35
37
  let t2;
36
- if ($[5] !== countries || $[6] !== intl.locale || $[7] !== preferred || $[8] !== props) {
37
- const choices = getCountryChoices(intl.locale, {
38
- countries,
39
- preferred
40
- });
41
- T0 = CodeComboBox;
42
- t1 = props;
43
- t2 = [...choices.preferred, ...choices.others].map(_temp);
44
- $[5] = countries;
45
- $[6] = intl.locale;
46
- $[7] = preferred;
47
- $[8] = props;
48
- $[9] = T0;
38
+ let t20;
39
+ let t3;
40
+ let t4;
41
+ let t5;
42
+ let t6;
43
+ let t7;
44
+ let t8;
45
+ let t9;
46
+ if ($[0] !== countries || $[1] !== intl || $[2] !== preferred || $[3] !== props) {
47
+ t20 = Symbol.for("react.early_return_sentinel");
48
+ bb0: {
49
+ const choices = getCountryChoices(intl.locale, {
50
+ countries,
51
+ preferred
52
+ });
53
+ const all = [...choices.preferred, ...choices.others].map(_temp);
54
+ let t21;
55
+ if ($[30] !== intl) {
56
+ t21 = intl.formatMessage(messages.noCountries);
57
+ $[30] = intl;
58
+ $[31] = t21;
59
+ } else t21 = $[31];
60
+ emptyMessage = t21;
61
+ if (props.multiple !== true) {
62
+ let rest;
63
+ if ($[32] !== props) {
64
+ const { multiple: _multiple, countries: _countries, preferred: _preferred, ...t22 } = props;
65
+ rest = t22;
66
+ $[32] = props;
67
+ $[33] = rest;
68
+ } else rest = $[33];
69
+ let t22;
70
+ if ($[34] !== intl || $[35] !== props.placeholder) {
71
+ t22 = props.placeholder ?? intl.formatMessage(messages.countryPlaceholder);
72
+ $[34] = intl;
73
+ $[35] = props.placeholder;
74
+ $[36] = t22;
75
+ } else t22 = $[36];
76
+ t20 = /* @__PURE__ */ jsx(CodeComboBox, {
77
+ ...rest,
78
+ choices: all,
79
+ placeholder: t22,
80
+ emptyMessage
81
+ });
82
+ break bb0;
83
+ }
84
+ const { value, onChange, onBlur, label, description, errors, disabled, readOnly, required, name, id, autoFocus, className, labelClassName, descriptionClassName, errorsClassName, controlClassName } = props;
85
+ codes = (value ?? []).filter(_temp2);
86
+ const editable = disabled !== true && readOnly !== true;
87
+ let t22;
88
+ if ($[37] !== onChange) {
89
+ t22 = (next) => onChange?.(next.length > 0 ? next : null);
90
+ $[37] = onChange;
91
+ $[38] = t22;
92
+ } else t22 = $[38];
93
+ set = t22;
94
+ let t23;
95
+ if ($[39] !== intl.locale) {
96
+ t23 = (code_0) => isCountryCode(code_0) ? getCountryName(code_0, intl.locale) : code_0;
97
+ $[39] = intl.locale;
98
+ $[40] = t23;
99
+ } else t23 = $[40];
100
+ const nameOf = t23;
101
+ const comboLabel = typeof label === "string" ? label : props["aria-label"];
102
+ T1 = Fieldset;
103
+ t11 = label;
104
+ t12 = description;
105
+ if ($[41] !== errors) {
106
+ t13 = errors ?? [];
107
+ $[41] = errors;
108
+ $[42] = t13;
109
+ } else t13 = $[42];
110
+ t14 = required;
111
+ t15 = disabled;
112
+ t16 = className;
113
+ t17 = labelClassName;
114
+ t18 = descriptionClassName;
115
+ t19 = errorsClassName;
116
+ t9 = CountryField_module_default.multiple;
117
+ t10 = codes.length > 0 ? /* @__PURE__ */ jsx("ul", {
118
+ className: CountryField_module_default.countries,
119
+ children: codes.map((code_1) => /* @__PURE__ */ jsxs("li", {
120
+ className: editable ? CountryField_module_default.country : CountryField_module_default.fixedCountry,
121
+ children: [
122
+ isCountryCode(code_1) ? /* @__PURE__ */ jsx("span", {
123
+ className: CountryField_module_default.flag,
124
+ "aria-hidden": "true",
125
+ children: getCountryFlag(code_1)
126
+ }) : null,
127
+ /* @__PURE__ */ jsx("span", {
128
+ className: CountryField_module_default.name,
129
+ children: nameOf(code_1)
130
+ }),
131
+ editable ? /* @__PURE__ */ jsx(IconButton, {
132
+ icon: X,
133
+ size: "sm",
134
+ label: `${intl.formatMessage(messages.remove)} ${nameOf(code_1)}`,
135
+ showTooltip: false,
136
+ onPress: () => set(codes.filter((entry) => entry !== code_1))
137
+ }) : null
138
+ ]
139
+ }, code_1))
140
+ }) : null;
141
+ T0 = CodeComboBox;
142
+ if ($[43] !== comboLabel) {
143
+ t0 = comboLabel !== void 0 ? { "aria-label": comboLabel } : {};
144
+ $[43] = comboLabel;
145
+ $[44] = t0;
146
+ } else t0 = $[44];
147
+ if ($[45] !== name) {
148
+ t1 = name !== void 0 ? { name } : {};
149
+ $[45] = name;
150
+ $[46] = t1;
151
+ } else t1 = $[46];
152
+ if ($[47] !== id) {
153
+ t2 = id !== void 0 ? { id } : {};
154
+ $[47] = id;
155
+ $[48] = t2;
156
+ } else t2 = $[48];
157
+ if ($[49] !== autoFocus) {
158
+ t3 = autoFocus !== void 0 ? { autoFocus } : {};
159
+ $[49] = autoFocus;
160
+ $[50] = t3;
161
+ } else t3 = $[50];
162
+ if ($[51] !== onBlur) {
163
+ t4 = onBlur !== void 0 ? { onBlur } : {};
164
+ $[51] = onBlur;
165
+ $[52] = t4;
166
+ } else t4 = $[52];
167
+ if ($[53] !== controlClassName) {
168
+ t5 = controlClassName !== void 0 ? { controlClassName } : {};
169
+ $[53] = controlClassName;
170
+ $[54] = t5;
171
+ } else t5 = $[54];
172
+ t6 = disabled;
173
+ t7 = readOnly;
174
+ t8 = all.filter((choice) => !codes.includes(choice.code));
175
+ }
176
+ $[0] = countries;
177
+ $[1] = intl;
178
+ $[2] = preferred;
179
+ $[3] = props;
180
+ $[4] = T0;
181
+ $[5] = T1;
182
+ $[6] = codes;
183
+ $[7] = emptyMessage;
184
+ $[8] = set;
185
+ $[9] = t0;
49
186
  $[10] = t1;
50
- $[11] = t2;
187
+ $[11] = t10;
188
+ $[12] = t11;
189
+ $[13] = t12;
190
+ $[14] = t13;
191
+ $[15] = t14;
192
+ $[16] = t15;
193
+ $[17] = t16;
194
+ $[18] = t17;
195
+ $[19] = t18;
196
+ $[20] = t19;
197
+ $[21] = t2;
198
+ $[22] = t20;
199
+ $[23] = t3;
200
+ $[24] = t4;
201
+ $[25] = t5;
202
+ $[26] = t6;
203
+ $[27] = t7;
204
+ $[28] = t8;
205
+ $[29] = t9;
51
206
  } else {
52
- T0 = $[9];
207
+ T0 = $[4];
208
+ T1 = $[5];
209
+ codes = $[6];
210
+ emptyMessage = $[7];
211
+ set = $[8];
212
+ t0 = $[9];
53
213
  t1 = $[10];
54
- t2 = $[11];
214
+ t10 = $[11];
215
+ t11 = $[12];
216
+ t12 = $[13];
217
+ t13 = $[14];
218
+ t14 = $[15];
219
+ t15 = $[16];
220
+ t16 = $[17];
221
+ t17 = $[18];
222
+ t18 = $[19];
223
+ t19 = $[20];
224
+ t2 = $[21];
225
+ t20 = $[22];
226
+ t3 = $[23];
227
+ t4 = $[24];
228
+ t5 = $[25];
229
+ t6 = $[26];
230
+ t7 = $[27];
231
+ t8 = $[28];
232
+ t9 = $[29];
55
233
  }
56
- let t3;
57
- if ($[12] !== intl || $[13] !== placeholder) {
58
- t3 = placeholder ?? intl.formatMessage(messages.countryPlaceholder);
59
- $[12] = intl;
60
- $[13] = placeholder;
61
- $[14] = t3;
62
- } else t3 = $[14];
63
- let t4;
64
- if ($[15] !== intl) {
65
- t4 = intl.formatMessage(messages.noCountries);
66
- $[15] = intl;
67
- $[16] = t4;
68
- } else t4 = $[16];
69
- let t5;
70
- if ($[17] !== T0 || $[18] !== t1 || $[19] !== t2 || $[20] !== t3 || $[21] !== t4) {
71
- t5 = /* @__PURE__ */ jsx(T0, {
234
+ if (t20 !== Symbol.for("react.early_return_sentinel")) return t20;
235
+ let t21;
236
+ if ($[55] !== codes || $[56] !== set) {
237
+ t21 = (code_2) => {
238
+ if (code_2 !== null && !codes.includes(code_2)) set([...codes, code_2]);
239
+ };
240
+ $[55] = codes;
241
+ $[56] = set;
242
+ $[57] = t21;
243
+ } else t21 = $[57];
244
+ let t22;
245
+ if ($[58] !== intl || $[59] !== props.placeholder) {
246
+ t22 = props.placeholder ?? intl.formatMessage(messages.addCountry);
247
+ $[58] = intl;
248
+ $[59] = props.placeholder;
249
+ $[60] = t22;
250
+ } else t22 = $[60];
251
+ let t23;
252
+ if ($[61] !== T0 || $[62] !== emptyMessage || $[63] !== t0 || $[64] !== t1 || $[65] !== t2 || $[66] !== t21 || $[67] !== t22 || $[68] !== t3 || $[69] !== t4 || $[70] !== t5 || $[71] !== t6 || $[72] !== t7 || $[73] !== t8) {
253
+ t23 = /* @__PURE__ */ jsx(T0, {
254
+ ...t0,
72
255
  ...t1,
73
- choices: t2,
74
- placeholder: t3,
75
- emptyMessage: t4
256
+ ...t2,
257
+ ...t3,
258
+ ...t4,
259
+ ...t5,
260
+ disabled: t6,
261
+ readOnly: t7,
262
+ choices: t8,
263
+ value: null,
264
+ onChange: t21,
265
+ placeholder: t22,
266
+ emptyMessage
267
+ });
268
+ $[61] = T0;
269
+ $[62] = emptyMessage;
270
+ $[63] = t0;
271
+ $[64] = t1;
272
+ $[65] = t2;
273
+ $[66] = t21;
274
+ $[67] = t22;
275
+ $[68] = t3;
276
+ $[69] = t4;
277
+ $[70] = t5;
278
+ $[71] = t6;
279
+ $[72] = t7;
280
+ $[73] = t8;
281
+ $[74] = t23;
282
+ } else t23 = $[74];
283
+ let t24;
284
+ if ($[75] !== t10 || $[76] !== t23 || $[77] !== t9) {
285
+ t24 = /* @__PURE__ */ jsxs("div", {
286
+ className: t9,
287
+ children: [t10, t23]
288
+ });
289
+ $[75] = t10;
290
+ $[76] = t23;
291
+ $[77] = t9;
292
+ $[78] = t24;
293
+ } else t24 = $[78];
294
+ let t25;
295
+ if ($[79] !== T1 || $[80] !== t11 || $[81] !== t12 || $[82] !== t13 || $[83] !== t14 || $[84] !== t15 || $[85] !== t16 || $[86] !== t17 || $[87] !== t18 || $[88] !== t19 || $[89] !== t24) {
296
+ t25 = /* @__PURE__ */ jsx(T1, {
297
+ legend: t11,
298
+ description: t12,
299
+ errors: t13,
300
+ isRequired: t14,
301
+ isDisabled: t15,
302
+ className: t16,
303
+ legendClassName: t17,
304
+ descriptionClassName: t18,
305
+ errorsClassName: t19,
306
+ children: t24
76
307
  });
77
- $[17] = T0;
78
- $[18] = t1;
79
- $[19] = t2;
80
- $[20] = t3;
81
- $[21] = t4;
82
- $[22] = t5;
83
- } else t5 = $[22];
84
- return t5;
308
+ $[79] = T1;
309
+ $[80] = t11;
310
+ $[81] = t12;
311
+ $[82] = t13;
312
+ $[83] = t14;
313
+ $[84] = t15;
314
+ $[85] = t16;
315
+ $[86] = t17;
316
+ $[87] = t18;
317
+ $[88] = t19;
318
+ $[89] = t24;
319
+ $[90] = t25;
320
+ } else t25 = $[90];
321
+ return t25;
322
+ }
323
+ function _temp2(code, index, list) {
324
+ return code !== "" && list.indexOf(code) === index;
85
325
  }
86
326
  function _temp(country) {
87
327
  return {
@@ -91,9 +331,9 @@ function _temp(country) {
91
331
  };
92
332
  }
93
333
  var isCodes = (value) => Array.isArray(value) && value.every(isString);
94
- /** The `country` type: `settings.countries` and `settings.preferred`. */
334
+ /** The `country` type: `multiple`, `settings.countries` and `settings.preferred`. */
95
335
  function CountryFieldEntry(props) {
96
- const $ = c(16);
336
+ const $ = c(24);
97
337
  let t0;
98
338
  if ($[0] !== props.field) {
99
339
  t0 = getSetting(props.field, "countries", isCodes);
@@ -126,24 +366,57 @@ function CountryFieldEntry(props) {
126
366
  $[8] = preferred;
127
367
  $[9] = t4;
128
368
  } else t4 = $[9];
129
- const t5 = isString(props.value) ? props.value : null;
130
- let t6;
131
- if ($[10] !== props.onChange || $[11] !== t2 || $[12] !== t3 || $[13] !== t4 || $[14] !== t5) {
132
- t6 = /* @__PURE__ */ jsx(CountryField, {
369
+ let t5;
370
+ if ($[10] !== t2 || $[11] !== t3 || $[12] !== t4) {
371
+ t5 = {
133
372
  ...t2,
134
373
  ...t3,
135
- ...t4,
136
- value: t5,
374
+ ...t4
375
+ };
376
+ $[10] = t2;
377
+ $[11] = t3;
378
+ $[12] = t4;
379
+ $[13] = t5;
380
+ } else t5 = $[13];
381
+ const shared = t5;
382
+ if (props.field.multiple === true) {
383
+ let t6;
384
+ if ($[14] !== props.value) {
385
+ t6 = Array.isArray(props.value) ? props.value.filter(isString) : [];
386
+ $[14] = props.value;
387
+ $[15] = t6;
388
+ } else t6 = $[15];
389
+ const codes = t6;
390
+ const t7 = codes.length > 0 ? codes : null;
391
+ let t8;
392
+ if ($[16] !== props.onChange || $[17] !== shared || $[18] !== t7) {
393
+ t8 = /* @__PURE__ */ jsx(CountryField, {
394
+ ...shared,
395
+ multiple: true,
396
+ value: t7,
397
+ onChange: props.onChange
398
+ });
399
+ $[16] = props.onChange;
400
+ $[17] = shared;
401
+ $[18] = t7;
402
+ $[19] = t8;
403
+ } else t8 = $[19];
404
+ return t8;
405
+ }
406
+ const t6 = isString(props.value) ? props.value : null;
407
+ let t7;
408
+ if ($[20] !== props.onChange || $[21] !== shared || $[22] !== t6) {
409
+ t7 = /* @__PURE__ */ jsx(CountryField, {
410
+ ...shared,
411
+ value: t6,
137
412
  onChange: props.onChange
138
413
  });
139
- $[10] = props.onChange;
140
- $[11] = t2;
141
- $[12] = t3;
142
- $[13] = t4;
143
- $[14] = t5;
144
- $[15] = t6;
145
- } else t6 = $[15];
146
- return t6;
414
+ $[20] = props.onChange;
415
+ $[21] = shared;
416
+ $[22] = t6;
417
+ $[23] = t7;
418
+ } else t7 = $[23];
419
+ return t7;
147
420
  }
148
421
  //#endregion
149
422
  export { CountryField, CountryFieldEntry };
@@ -1 +1 @@
1
- {"version":3,"file":"CountryField.js","names":["usePanneauIntl","CodeComboBox","getFieldProps","getSetting","isString","messages","FieldEntryProps","FieldProps","getCountryChoices","CountryFieldProps","countries","preferred","placeholder","controlClassName","CountryField","t0","$","_c","props","intl","T0","t1","t2","locale","choices","others","map","_temp","t3","formatMessage","countryPlaceholder","t4","noCountries","t5","country","code","name","prefix","flag","isCodes","value","Array","isArray","every","CountryFieldEntry","field","undefined","t6","onChange","_c"],"sources":["../../src/country/CountryField.tsx"],"sourcesContent":["import { usePanneauIntl } from '@panneau/ui';\n\nimport { CodeComboBox } from '../shared/CodeComboBox';\nimport { getFieldProps, getSetting, isString } from '../shared/entry';\nimport { messages } from '../shared/messages';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\nimport { getCountryChoices } from './countries';\n\nexport interface CountryFieldProps extends FieldProps<string> {\n /** The codes to offer. All countries without it. */\n countries?: readonly string[];\n /** Codes shown first, in their order, above the others: `['CA', 'US']`. */\n preferred?: readonly string[];\n placeholder?: string;\n controlClassName?: string;\n}\n\n/**\n * A country, as its ISO 3166-1 alpha-2 code (`CA`): a combo box of the countries with their flags\n * and their names in the user's locale. Typing filters them by name or by code.\n */\nexport function CountryField({ countries, preferred, placeholder, ...props }: CountryFieldProps) {\n const intl = usePanneauIntl();\n const choices = getCountryChoices(intl.locale, { countries, preferred });\n return (\n <CodeComboBox\n {...props}\n choices={[...choices.preferred, ...choices.others].map((country) => ({\n code: country.code,\n name: country.name,\n prefix: country.flag,\n }))}\n placeholder={placeholder ?? intl.formatMessage(messages.countryPlaceholder)}\n emptyMessage={intl.formatMessage(messages.noCountries)}\n />\n );\n}\n\nconst isCodes = (value: unknown): value is string[] =>\n Array.isArray(value) && value.every(isString);\n\n/** The `country` type: `settings.countries` and `settings.preferred`. */\nexport function CountryFieldEntry(props: FieldEntryProps) {\n const countries = getSetting(props.field, 'countries', isCodes);\n const preferred = getSetting(props.field, 'preferred', isCodes);\n return (\n <CountryField\n {...getFieldProps(props)}\n {...(countries !== undefined ? { countries } : {})}\n {...(preferred !== undefined ? { preferred } : {})}\n value={isString(props.value) ? props.value : null}\n onChange={props.onChange}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;AAqBA,SAAOc,aAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAP;CAAA,IAAAE;CAAA,IAAAD;CAAA,IAAAO;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAsB,CAAA,CAAAL,WAAAC,WAAAC,aAAA,GAAAM,SAAAH;EAAkEC,EAAA,KAAAD;EAAAC,EAAA,KAAAN;EAAAM,EAAA,KAAAJ;EAAAI,EAAA,KAAAL;EAAAK,EAAA,KAAAE;CAAA,OAAA;EAAAR,YAAAM,EAAA;EAAAJ,cAAAI,EAAA;EAAAL,YAAAK,EAAA;EAAAE,QAAAF,EAAA;CAAA;CAC3F,MAAAG,OAAanB,eAAe;CAAE,IAAAoB;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAN,EAAA,OAAAN,aAAAM,EAAA,OAAAG,KAAAI,UAAAP,EAAA,OAAAL,aAAAK,EAAA,OAAAE,OAAA;EAC9B,MAAAM,UAAgBhB,kBAAkBW,KAAII,QAAS;GAAAb;GAAAC;EAAuB,CAAC;EAElES,KAAAnB;EACOiB,KAAAA;EACKI,KAAA,CAAA,GAAIE,QAAOb,WAAU,GAAKa,QAAOC,MAAO,CAAC,CAAAC,IAAKC,KAIrD;EAACX,EAAA,KAAAN;EAAAM,EAAA,KAAAG,KAAAI;EAAAP,EAAA,KAAAL;EAAAK,EAAA,KAAAE;EAAAF,EAAA,KAAAI;EAAAJ,EAAA,MAAAK;EAAAL,EAAA,MAAAM;CAAA,OAAA;EAAAF,KAAAJ,EAAA;EAAAK,KAAAL,EAAA;EAAAM,KAAAN,EAAA;CAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,QAAAG,QAAAH,EAAA,QAAAJ,aAAA;EACUgB,KAAAhB,eAAeO,KAAIU,cAAexB,SAAQyB,kBAAmB;EAACd,EAAA,MAAAG;EAAAH,EAAA,MAAAJ;EAAAI,EAAA,MAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,QAAAG,MAAA;EAC7DY,KAAAZ,KAAIU,cAAexB,SAAQ2B,WAAY;EAAChB,EAAA,MAAAG;EAAAH,EAAA,MAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,IAAAiB;CAAA,IAAAjB,EAAA,QAAAI,MAAAJ,EAAA,QAAAK,MAAAL,EAAA,QAAAM,MAAAN,EAAA,QAAAY,MAAAZ,EAAA,QAAAe,IAAA;EAR1DE,KAAA,oBAAC,IAAD;GAAa,GACLf;GACK,SAAAI;GAKI,aAAAM;GACC,cAAAG;EAAwC,CAAA;EACxDf,EAAA,MAAAI;EAAAJ,EAAA,MAAAK;EAAAL,EAAA,MAAAM;EAAAN,EAAA,MAAAY;EAAAZ,EAAA,MAAAe;EAAAf,EAAA,MAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CAAA,OATFiB;AASE;AAbH,SAAAN,MAAAO,SAAA;CAAA,OAM0E;EAAAC,MAC3DD,QAAOC;EAAKC,MACZF,QAAOE;EAAKC,QACVH,QAAOI;CACnB;AAAC;AAOb,IAAMC,WAAWC,UACbC,MAAMC,QAAQF,KAAK,KAAKA,MAAMG,MAAMvC,QAAQ;;AAGhD,SAAOwC,kBAAA1B,OAAA;CAAA,MAAAF,IAAAC,EAAA,EAAA;CAAA,IAAAF;CAAA,IAAAC,EAAA,OAAAE,MAAA2B,OAAA;EACe9B,KAAAZ,WAAWe,MAAK2B,OAAQ,aAAaN,OAAO;EAACvB,EAAA,KAAAE,MAAA2B;EAAA7B,EAAA,KAAAD;CAAA,OAAAA,KAAAC,EAAA;CAA/D,MAAAN,YAAkBK;CAA8C,IAAAM;CAAA,IAAAL,EAAA,OAAAE,MAAA2B,OAAA;EAC9CxB,KAAAlB,WAAWe,MAAK2B,OAAQ,aAAaN,OAAO;EAACvB,EAAA,KAAAE,MAAA2B;EAAA7B,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAA/D,MAAAL,YAAkBU;CAA8C,IAAAC;CAAA,IAAAN,EAAA,OAAAE,OAAA;EAGpDI,KAAApB,cAAcgB,KAAK;EAACF,EAAA,KAAAE;EAAAF,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,OAAAN,WAAA;EACnBkB,KAAAlB,cAAcoC,KAAAA,IAAd,EAAApC,UAA2C,IAA3C,CAA2C;EAACM,EAAA,KAAAN;EAAAM,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,OAAAL,WAAA;EAC5CoB,KAAApB,cAAcmC,KAAAA,IAAd,EAAAnC,UAA2C,IAA3C,CAA2C;EAACK,EAAA,KAAAL;EAAAK,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAC1C,MAAAiB,KAAA7B,SAASc,MAAKsB,KAA2B,IAAjBtB,MAAKsB,QAA7B;CAA0C,IAAAO;CAAA,IAAA/B,EAAA,QAAAE,MAAA8B,YAAAhC,EAAA,QAAAM,MAAAN,EAAA,QAAAY,MAAAZ,EAAA,QAAAe,MAAAf,EAAA,QAAAiB,IAAA;EAJrDc,KAAA,oBAAC,cAAD;GAAa,GACLzB;GAAoB,GACnBM;GAA4C,GAC5CG;GACE,OAAAE;GACG,UAAAf,MAAK8B;EAAS,CAAA;EAC1BhC,EAAA,MAAAE,MAAA8B;EAAAhC,EAAA,MAAAM;EAAAN,EAAA,MAAAY;EAAAZ,EAAA,MAAAe;EAAAf,EAAA,MAAAiB;EAAAjB,EAAA,MAAA+B;CAAA,OAAAA,KAAA/B,EAAA;CAAA,OANF+B;AAME"}
1
+ {"version":3,"file":"CountryField.js","names":["X","Fieldset","IconButton","usePanneauIntl","CodeComboBox","getFieldProps","getSetting","isString","messages","FieldEntryProps","FieldProps","styles","getCountryChoices","getCountryFlag","getCountryName","isCountryCode","CountryFieldBaseProps","Omit","countries","preferred","placeholder","controlClassName","SingleCountryFieldProps","multiple","value","onChange","MultipleCountryFieldProps","CountryFieldProps","CountryField","props","$","_c","intl","T0","T1","codes","emptyMessage","set","t0","t1","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t2","t20","t3","t4","t5","t6","t7","t8","t9","Symbol","for","bb0","choices","locale","all","others","map","_temp","t21","formatMessage","noCountries","rest","_multiple","_countries","_preferred","t22","countryPlaceholder","onBlur","label","description","errors","disabled","readOnly","required","name","id","autoFocus","className","labelClassName","descriptionClassName","errorsClassName","filter","_temp2","editable","next","length","t23","code_0","code","nameOf","comboLabel","code_1","country","fixedCountry","flag","remove","entry","undefined","choice","includes","code_2","addCountry","t24","t25","index","list","indexOf","prefix","isCodes","Array","isArray","every","CountryFieldEntry","field","shared","_c","styles"],"sources":["../../src/country/CountryField.tsx"],"sourcesContent":["import { X } from 'lucide-react';\n\nimport { Fieldset, IconButton, usePanneauIntl } from '@panneau/ui';\n\nimport { CodeComboBox } from '../shared/CodeComboBox';\nimport { getFieldProps, getSetting, isString } from '../shared/entry';\nimport { messages } from '../shared/messages';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\nimport styles from './CountryField.module.css';\nimport { getCountryChoices, getCountryFlag, getCountryName, isCountryCode } from './countries';\n\n/** Props of both single and multiple country fields. */\nexport interface CountryFieldBaseProps extends Omit<FieldProps<never>, 'value' | 'onChange'> {\n /** The codes to offer. All countries without it. */\n countries?: readonly string[];\n /** Codes shown first, in their order, above the others: `['CA', 'US']`. */\n preferred?: readonly string[];\n placeholder?: string;\n controlClassName?: string;\n}\n\nexport interface SingleCountryFieldProps extends CountryFieldBaseProps {\n multiple?: false;\n value?: string | null;\n onChange?: (value: string | null) => void;\n}\n\nexport interface MultipleCountryFieldProps extends CountryFieldBaseProps {\n /** Several countries, in the order they were chosen (decision 0058). */\n multiple: true;\n value?: readonly string[] | null;\n /** Called with the codes. An empty list is `null`. */\n onChange?: (value: string[] | null) => void;\n}\n\nexport type CountryFieldProps = SingleCountryFieldProps | MultipleCountryFieldProps;\n\n/**\n * A country, as its ISO 3166-1 alpha-2 code (`CA`): a combo box of the countries with their flags\n * and their names in the user's locale. Typing filters them by name or by code. With `multiple`,\n * several countries, each removable, in the order they were chosen, and the combo box adds one.\n */\nexport function CountryField(props: CountryFieldProps) {\n const intl = usePanneauIntl();\n const { countries, preferred } = props;\n const choices = getCountryChoices(intl.locale, { countries, preferred });\n const all = [...choices.preferred, ...choices.others].map((country) => ({\n code: country.code,\n name: country.name,\n prefix: country.flag,\n }));\n const emptyMessage = intl.formatMessage(messages.noCountries);\n\n if (props.multiple !== true) {\n const {\n multiple: _multiple,\n countries: _countries,\n preferred: _preferred,\n ...rest\n } = props;\n return (\n <CodeComboBox\n {...rest}\n choices={all}\n placeholder={props.placeholder ?? intl.formatMessage(messages.countryPlaceholder)}\n emptyMessage={emptyMessage}\n />\n );\n }\n\n const {\n value,\n onChange,\n onBlur,\n label,\n description,\n errors,\n disabled,\n readOnly,\n required,\n name,\n id,\n autoFocus,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n controlClassName,\n } = props;\n const codes = (value ?? []).filter(\n (code, index, list) => code !== '' && list.indexOf(code) === index,\n );\n const editable = disabled !== true && readOnly !== true;\n const set = (next: string[]) => onChange?.(next.length > 0 ? next : null);\n const nameOf = (code: string) =>\n isCountryCode(code) ? getCountryName(code, intl.locale) : code;\n const comboLabel = typeof label === 'string' ? label : props['aria-label'];\n return (\n <Fieldset\n legend={label}\n description={description}\n errors={errors ?? []}\n isRequired={required}\n isDisabled={disabled}\n className={className}\n legendClassName={labelClassName}\n descriptionClassName={descriptionClassName}\n errorsClassName={errorsClassName}\n >\n <div className={styles.multiple}>\n {codes.length > 0 ? (\n <ul className={styles.countries}>\n {codes.map((code) => (\n <li\n key={code}\n className={editable ? styles.country : styles.fixedCountry}\n >\n {isCountryCode(code) ? (\n <span className={styles.flag} aria-hidden=\"true\">\n {getCountryFlag(code)}\n </span>\n ) : null}\n <span className={styles.name}>{nameOf(code)}</span>\n {editable ? (\n <IconButton\n icon={X}\n size=\"sm\"\n label={`${intl.formatMessage(messages.remove)} ${nameOf(code)}`}\n showTooltip={false}\n onPress={() => set(codes.filter((entry) => entry !== code))}\n />\n ) : null}\n </li>\n ))}\n </ul>\n ) : null}\n <CodeComboBox\n {...(comboLabel !== undefined ? { 'aria-label': comboLabel } : {})}\n {...(name !== undefined ? { name } : {})}\n {...(id !== undefined ? { id } : {})}\n {...(autoFocus !== undefined ? { autoFocus } : {})}\n {...(onBlur !== undefined ? { onBlur } : {})}\n {...(controlClassName !== undefined ? { controlClassName } : {})}\n disabled={disabled}\n readOnly={readOnly}\n choices={all.filter((choice) => !codes.includes(choice.code))}\n value={null}\n onChange={(code) => {\n if (code !== null && !codes.includes(code)) {\n set([...codes, code]);\n }\n }}\n placeholder={props.placeholder ?? intl.formatMessage(messages.addCountry)}\n emptyMessage={emptyMessage}\n />\n </div>\n </Fieldset>\n );\n}\n\nconst isCodes = (value: unknown): value is string[] =>\n Array.isArray(value) && value.every(isString);\n\n/** The `country` type: `multiple`, `settings.countries` and `settings.preferred`. */\nexport function CountryFieldEntry(props: FieldEntryProps) {\n const countries = getSetting(props.field, 'countries', isCodes);\n const preferred = getSetting(props.field, 'preferred', isCodes);\n const shared = {\n ...getFieldProps(props),\n ...(countries !== undefined ? { countries } : {}),\n ...(preferred !== undefined ? { preferred } : {}),\n };\n if (props.field.multiple === true) {\n const codes = Array.isArray(props.value) ? props.value.filter(isString) : [];\n return (\n <CountryField\n {...shared}\n multiple\n value={codes.length > 0 ? codes : null}\n onChange={props.onChange}\n />\n );\n }\n return (\n <CountryField\n {...shared}\n value={isString(props.value) ? props.value : null}\n onChange={props.onChange}\n />\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import "./CountryField.css";
2
+ //#region src/country/CountryField.module.css
3
+ var multiple = "panneau-country-field-multiple";
4
+ var countries = "panneau-country-field-countries";
5
+ var country = "panneau-country-field-country";
6
+ var fixedCountry = "panneau-country-field-fixed-country";
7
+ var flag = "panneau-country-field-flag";
8
+ var name = "panneau-country-field-name";
9
+ var CountryField_module_default = {
10
+ multiple,
11
+ countries,
12
+ country,
13
+ fixedCountry,
14
+ flag,
15
+ name
16
+ };
17
+ //#endregion
18
+ export { countries, country, CountryField_module_default as default, fixedCountry, flag, multiple, name };
19
+
20
+ //# sourceMappingURL=CountryField.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CountryField.module.js","names":[],"sources":["../../src/country/CountryField.module.css"],"sourcesContent":[".multiple {\n display: flex;\n flex-direction: column;\n gap: var(--panneau-space-2);\n}\n\n.countries {\n display: flex;\n flex-wrap: wrap;\n gap: var(--panneau-space-1) var(--panneau-space-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.country,\n.fixedCountry {\n display: inline-flex;\n align-items: center;\n gap: var(--panneau-space-1);\n min-height: var(--panneau-control-height-sm);\n max-width: 100%;\n padding-inline: var(--panneau-space-3) var(--panneau-space-1);\n font-size: var(--panneau-font-size-sm);\n background-color: var(--panneau-color-surface-sunken);\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-full);\n}\n\n.fixedCountry {\n padding-inline-end: var(--panneau-space-3);\n}\n\n.flag {\n flex: none;\n}\n\n.name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n"],"mappings":""}
@@ -1,3 +1,3 @@
1
- export { CountryField, CountryFieldEntry, type CountryFieldProps } from './CountryField.js';
1
+ export { CountryField, type CountryFieldBaseProps, CountryFieldEntry, type CountryFieldProps, type MultipleCountryFieldProps, type SingleCountryFieldProps, } from './CountryField.js';
2
2
  export { COUNTRY_CODES, type CountryChoice, type CountryChoicesOptions, getCountryChoices, getCountryFlag, getCountryName, getLocaleCountry, isCountryCode, } from './countries.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/country/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EACH,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,GAChB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/country/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,KAAK,qBAAqB,EAC1B,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,GAC/B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,GAChB,MAAM,aAAa,CAAC"}