@woodylab/payload 0.0.13 → 0.0.14

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.
@@ -35,6 +35,35 @@ const fieldCheckbox = (override) => ({
35
35
  ...override,
36
36
  });
37
37
 
38
+ const fieldNumber = (override) => ({
39
+ name: 'number',
40
+ label: 'Number',
41
+ type: 'number',
42
+ required: false,
43
+ ...override,
44
+ });
45
+
46
+ const fieldRelationship = (relationTo, override) => ({
47
+ name: 'relationship',
48
+ label: 'Relationship',
49
+ type: 'relationship',
50
+ relationTo,
51
+ required: false,
52
+ ...override,
53
+ });
54
+
55
+ const fieldRichText = (override) => ({
56
+ name: 'richText',
57
+ label: 'Rich Text',
58
+ type: 'richText',
59
+ required: false,
60
+ admin: {
61
+ placeholder: 'Insert text here',
62
+ rows: 5,
63
+ },
64
+ ...override,
65
+ });
66
+
38
67
  const fieldSelect = (override) => ({
39
68
  name: 'select',
40
69
  label: 'select',
@@ -44,6 +73,134 @@ const fieldSelect = (override) => ({
44
73
  ...override
45
74
  });
46
75
 
76
+ const fieldContainerProps = (customFields = []) => {
77
+ return {
78
+ name: 'ctrP',
79
+ label: 'Proprietà container',
80
+ type: 'group',
81
+ fields: [
82
+ ...customFields,
83
+ fieldRichText({ name: 'body', label: 'Contenuto', required: false }),
84
+ fieldContainerWidths(),
85
+ {
86
+ type: 'tabs',
87
+ tabs: [
88
+ {
89
+ label: 'Stile',
90
+ fields: [
91
+ fieldUpload('media', { name: 'bgi', label: 'Immagine di sfondo' }),
92
+ //WFieldColor({name:'bgc', label:'Colore di sfondo', required:false}),
93
+ {
94
+ name: 'borderRadius',
95
+ type: 'select',
96
+ label: 'Angoli arrotondati',
97
+ defaultValue: 'rounded-none',
98
+ options: [
99
+ { label: 'Nessuno', value: 'rounded-none' },
100
+ { label: 'Piccolo', value: 'rounded-sm' },
101
+ { label: 'Medio', value: 'rounded-md' },
102
+ { label: 'Grande', value: 'rounded-lg' },
103
+ { label: 'Extra Grande', value: 'rounded-xl' },
104
+ { label: 'Massimo', value: 'rounded-full' },
105
+ ],
106
+ admin: {
107
+ width: '50%',
108
+ description: 'Imposta lo stile degli angoli arrotondati del contenitore.',
109
+ },
110
+ },
111
+ {
112
+ name: 'boxShadow',
113
+ type: 'select',
114
+ label: 'Ombra contenitore',
115
+ defaultValue: 'shadow-none', // Default: nessuna ombra
116
+ options: [
117
+ { label: 'Nessuna', value: 'shadow-none' },
118
+ { label: 'Piccola', value: 'shadow-sm' },
119
+ { label: 'Normale', value: 'shadow' },
120
+ { label: 'Media', value: 'shadow-md' },
121
+ { label: 'Grande', value: 'shadow-lg' },
122
+ { label: 'Extra Grande', value: 'shadow-xl' },
123
+ { label: 'Massima', value: 'shadow-2xl' },
124
+ ],
125
+ admin: {
126
+ width: '50%',
127
+ description: 'Imposta lo stile dell\'ombra per il contenitore.',
128
+ },
129
+ }
130
+ ]
131
+ },
132
+ {
133
+ label: 'Dimensioni',
134
+ fields: [
135
+ fieldHeights(),
136
+ {
137
+ type: 'tabs',
138
+ tabs: [
139
+ {
140
+ label: 'Margini',
141
+ fields: [
142
+ fieldMargins()
143
+ ]
144
+ },
145
+ {
146
+ label: 'Paddings',
147
+ fields: [
148
+ fieldPaddings()
149
+ ]
150
+ }
151
+ ]
152
+ }
153
+ ]
154
+ }
155
+ ]
156
+ },
157
+ ]
158
+ };
159
+ };
160
+
161
+ const fieldThemeColor = (override) => ({
162
+ name: override?.name || 'color',
163
+ label: override?.label || 'Colore',
164
+ type: 'select',
165
+ required: override?.required ?? false,
166
+ options: [
167
+ { label: 'Default', value: '' },
168
+ { label: 'Foreground', value: 'foreground' },
169
+ { label: 'Primary', value: 'primary' },
170
+ { label: 'Secondary', value: 'secondary' },
171
+ { label: 'Accent', value: 'accent' },
172
+ { label: 'Dark', value: 'dark' },
173
+ { label: 'Light', value: 'light' },
174
+ { label: 'White', value: 'white' },
175
+ { label: 'Black', value: 'black' },
176
+ ],
177
+ admin: {
178
+ ...override?.admin,
179
+ },
180
+ });
181
+
182
+ const fieldConfigProps = (customFields = []) => {
183
+ return {
184
+ name: 'config',
185
+ label: 'Configurazione',
186
+ type: 'group',
187
+ fields: [
188
+ ...customFields,
189
+ ],
190
+ };
191
+ };
192
+
193
+ const fieldContentProps = (customFields = []) => {
194
+ return {
195
+ name: 'cntP',
196
+ label: 'Contenuto',
197
+ type: 'group',
198
+ fields: [
199
+ ...customFields,
200
+ ],
201
+ };
202
+ };
203
+
47
204
  /**
48
205
  * Costante che definisce le varianti di larghezza del container come classi Tailwind
49
206
  */
@@ -687,6 +844,409 @@ var index = /*#__PURE__*/Object.freeze({
687
844
  TailwindWidths: TailwindWidths
688
845
  });
689
846
 
847
+ /**
848
+ * Genera un campo per la selezione delle altezze
849
+ * @returns Field - Campo di tipo `select` per PayloadCMS
850
+ */
851
+ const fieldViewportHeights = () => {
852
+ return fieldSelect({
853
+ name: 'h',
854
+ label: 'Altezza',
855
+ type: 'select',
856
+ options: [{ value: '', label: '(Nessuno)' }, ...TailwindViewportHeights.map(h => ({ value: `h-${h}`, label: h }))],
857
+ admin: {
858
+ description: 'Definisce l’altezza dell’elemento.',
859
+ width: '50%'
860
+ },
861
+ });
862
+ };
863
+
864
+ const fieldSectionProps = (customFields = []) => {
865
+ return {
866
+ name: 'sctP',
867
+ label: 'Proprietà sezione',
868
+ type: 'group',
869
+ fields: [
870
+ ...customFields,
871
+ fieldRichText({ name: 'body', label: 'Contenuto', required: false }),
872
+ {
873
+ type: 'tabs',
874
+ tabs: [
875
+ {
876
+ label: 'Stile',
877
+ fields: [
878
+ fieldUpload('media', { name: 'bgi', label: 'Immagine di sfondo' }),
879
+ fieldThemeColor({ name: 'bgc', label: 'Colore di sfondo', required: false }),
880
+ ]
881
+ }
882
+ ]
883
+ },
884
+ {
885
+ type: 'tabs',
886
+ tabs: [
887
+ {
888
+ label: 'Dimensioni',
889
+ fields: [
890
+ fieldViewportHeights(),
891
+ {
892
+ type: 'tabs',
893
+ tabs: [{
894
+ label: 'Margini',
895
+ fields: [
896
+ fieldMargins()
897
+ ]
898
+ },
899
+ {
900
+ label: 'Paddings',
901
+ fields: [
902
+ fieldPaddings()
903
+ ]
904
+ }
905
+ ]
906
+ }
907
+ ]
908
+ }
909
+ ]
910
+ },
911
+ ],
912
+ };
913
+ };
914
+
915
+ const fieldSectionTabs = (options = {}) => {
916
+ const { config = true, section = true, container = true, content = true, configFields = [], sectionFields = [], containerFields = [], contentFields = [] } = options;
917
+ const tabs = [];
918
+ if (config) {
919
+ tabs.push({
920
+ label: 'Configurazione',
921
+ fields: [
922
+ fieldConfigProps(configFields)
923
+ ],
924
+ });
925
+ }
926
+ // Tab per la sezione
927
+ if (section) {
928
+ tabs.push({
929
+ label: 'Sezione',
930
+ fields: [
931
+ fieldSectionProps(sectionFields)
932
+ ],
933
+ });
934
+ }
935
+ // Tab per il container
936
+ if (container) {
937
+ tabs.push({
938
+ label: 'Container',
939
+ fields: [
940
+ fieldContainerProps(containerFields)
941
+ ],
942
+ });
943
+ }
944
+ // Tab per il contenuto
945
+ if (content) {
946
+ tabs.push({
947
+ label: 'Contenuto',
948
+ fields: [
949
+ fieldContentProps(contentFields)
950
+ ],
951
+ });
952
+ }
953
+ return {
954
+ type: 'tabs',
955
+ tabs: tabs,
956
+ };
957
+ };
958
+
959
+ /**
960
+ * Genera un campo per la selezione delle larghezze del container
961
+ * @returns Field - Campo di tipo `select` per PayloadCMS
962
+ */
963
+ const fieldContainerWidths = () => {
964
+ return fieldSelect({
965
+ name: 'container',
966
+ label: 'Larghezza del container',
967
+ options: [{ value: '', label: '(Nessuno)' }, ...TailwindContainerWidths],
968
+ admin: {
969
+ description: 'Seleziona una larghezza massima per il container. Usa "None" per una larghezza a schermo intero.',
970
+ },
971
+ });
972
+ };
973
+
974
+ /**
975
+ * Genera un campo per la selezione delle altezze
976
+ * @returns Field - Campo di tipo `select` per PayloadCMS
977
+ */
978
+ const fieldHeights = () => {
979
+ return fieldSelect({
980
+ name: 'h',
981
+ label: 'Altezza',
982
+ type: 'select',
983
+ defaultValue: 'h-full',
984
+ options: [{ value: '', label: '(Nessuno)' }, ...TailwindHeights.map(h => ({ value: `h-${h}`, label: h }))],
985
+ admin: {
986
+ description: 'Definisce l’altezza dell’elemento.',
987
+ },
988
+ });
989
+ };
990
+
991
+ const concatMarginFields = (args) => {
992
+ const { value, siblingData, operation, } = args;
993
+ if (operation === 'create' || operation === 'update') {
994
+ const margins = siblingData || {};
995
+ const { all, x, y, t, r, b, l } = margins;
996
+ const classes = [];
997
+ if (all)
998
+ classes.push(`m-${all}`);
999
+ if (x)
1000
+ classes.push(`mx-${x}`);
1001
+ if (y)
1002
+ classes.push(`my-${y}`);
1003
+ if (t)
1004
+ classes.push(`mt-${t}`);
1005
+ if (r)
1006
+ classes.push(`mr-${r}`);
1007
+ if (b)
1008
+ classes.push(`mb-${b}`);
1009
+ if (l)
1010
+ classes.push(`ml-${l}`);
1011
+ return classes.join(' ');
1012
+ }
1013
+ return value;
1014
+ };
1015
+ /**
1016
+ * Genera un campo per la selezione dinamica dei margini
1017
+ * @returns Field - Campo di tipo `group` per PayloadCMS
1018
+ */
1019
+ const fieldMargins = () => {
1020
+ return {
1021
+ name: 'm',
1022
+ label: 'Margini',
1023
+ type: 'group',
1024
+ fields: [
1025
+ {
1026
+ name: 'className',
1027
+ label: 'Classi CSS Margini',
1028
+ type: 'text',
1029
+ hooks: {
1030
+ beforeChange: [concatMarginFields],
1031
+ },
1032
+ admin: {
1033
+ readOnly: true,
1034
+ description: 'Questa stringa verrà generata automaticamente in base ai campi sottostanti.',
1035
+ },
1036
+ },
1037
+ {
1038
+ type: 'row',
1039
+ fields: [
1040
+ fieldNumber({
1041
+ name: 'all',
1042
+ label: 'Tutti i lati',
1043
+ type: 'number',
1044
+ min: 0,
1045
+ max: 96,
1046
+ admin: {
1047
+ width: '33%'
1048
+ }
1049
+ }),
1050
+ fieldNumber({
1051
+ name: 'x',
1052
+ label: 'Orizzontale',
1053
+ type: 'number',
1054
+ min: 0,
1055
+ max: 96,
1056
+ admin: {
1057
+ width: '33%'
1058
+ }
1059
+ }),
1060
+ fieldNumber({
1061
+ name: 'y',
1062
+ label: 'Verticale',
1063
+ type: 'number',
1064
+ min: 0,
1065
+ max: 96,
1066
+ admin: {
1067
+ width: '33%'
1068
+ }
1069
+ }),
1070
+ fieldNumber({
1071
+ name: 't',
1072
+ label: 'Top',
1073
+ type: 'number',
1074
+ min: 0,
1075
+ max: 96,
1076
+ admin: {
1077
+ width: '25%'
1078
+ }
1079
+ }),
1080
+ fieldNumber({
1081
+ name: 'r',
1082
+ label: 'Right',
1083
+ type: 'number',
1084
+ min: 0,
1085
+ max: 96,
1086
+ admin: {
1087
+ width: '25%'
1088
+ }
1089
+ }),
1090
+ fieldNumber({
1091
+ name: 'b',
1092
+ label: 'Bottom',
1093
+ type: 'number',
1094
+ min: 0,
1095
+ max: 96,
1096
+ admin: {
1097
+ width: '25%'
1098
+ }
1099
+ }),
1100
+ fieldNumber({
1101
+ name: 'l',
1102
+ label: 'Left',
1103
+ type: 'number',
1104
+ min: 0,
1105
+ max: 96,
1106
+ admin: {
1107
+ width: '25%'
1108
+ }
1109
+ }),
1110
+ ]
1111
+ }
1112
+ ],
1113
+ admin: {
1114
+ description: 'Definisce lo spazio esterno generale, orizzontale, verticale o per ciascun lato.',
1115
+ },
1116
+ };
1117
+ };
1118
+
1119
+ /**
1120
+ * Hook per concatenare le classi CSS di padding
1121
+ */
1122
+ const concatPaddingFields = (args) => {
1123
+ const { value, siblingData, operation, } = args;
1124
+ if (operation === 'create' || operation === 'update') {
1125
+ const paddings = siblingData || {};
1126
+ const { all, x, y, t, r, b, l } = paddings;
1127
+ const classes = [];
1128
+ if (all)
1129
+ classes.push(`p-${all}`);
1130
+ if (x)
1131
+ classes.push(`px-${x}`);
1132
+ if (y)
1133
+ classes.push(`py-${y}`);
1134
+ if (t)
1135
+ classes.push(`pt-${t}`);
1136
+ if (r)
1137
+ classes.push(`pr-${r}`);
1138
+ if (b)
1139
+ classes.push(`pb-${b}`);
1140
+ if (l)
1141
+ classes.push(`pl-${l}`);
1142
+ return classes.join(' ');
1143
+ }
1144
+ return value;
1145
+ };
1146
+ /**
1147
+ * Genera un campo per la selezione dinamica dei padding
1148
+ * @returns Field - Campo di tipo `group` per PayloadCMS
1149
+ */
1150
+ const fieldPaddings = () => {
1151
+ return {
1152
+ name: 'p',
1153
+ label: 'Padding',
1154
+ type: 'group',
1155
+ fields: [
1156
+ {
1157
+ name: 'className',
1158
+ label: 'Classi CSS Padding',
1159
+ type: 'text',
1160
+ hooks: {
1161
+ beforeChange: [concatPaddingFields],
1162
+ },
1163
+ admin: {
1164
+ readOnly: true,
1165
+ description: 'Questa stringa verrà generata automaticamente in base ai campi sottostanti.',
1166
+ },
1167
+ },
1168
+ {
1169
+ type: 'row',
1170
+ fields: [
1171
+ fieldNumber({
1172
+ name: 'all',
1173
+ label: 'Tutti i lati',
1174
+ type: 'number',
1175
+ min: 0,
1176
+ max: 96,
1177
+ admin: {
1178
+ width: '33%'
1179
+ }
1180
+ }),
1181
+ fieldNumber({
1182
+ name: 'x',
1183
+ label: 'Orizzontale',
1184
+ type: 'number',
1185
+ min: 0,
1186
+ max: 96,
1187
+ admin: {
1188
+ width: '33%'
1189
+ }
1190
+ }),
1191
+ fieldNumber({
1192
+ name: 'y',
1193
+ label: 'Verticale',
1194
+ type: 'number',
1195
+ min: 0,
1196
+ max: 96,
1197
+ admin: {
1198
+ width: '33%'
1199
+ }
1200
+ }),
1201
+ fieldNumber({
1202
+ name: 't',
1203
+ label: 'Top',
1204
+ type: 'number',
1205
+ min: 0,
1206
+ max: 96,
1207
+ admin: {
1208
+ width: '25%'
1209
+ }
1210
+ }),
1211
+ fieldNumber({
1212
+ name: 'r',
1213
+ label: 'Right',
1214
+ type: 'number',
1215
+ min: 0,
1216
+ max: 96,
1217
+ admin: {
1218
+ width: '25%'
1219
+ }
1220
+ }),
1221
+ fieldNumber({
1222
+ name: 'b',
1223
+ label: 'Bottom',
1224
+ type: 'number',
1225
+ min: 0,
1226
+ max: 96,
1227
+ admin: {
1228
+ width: '25%'
1229
+ }
1230
+ }),
1231
+ fieldNumber({
1232
+ name: 'l',
1233
+ label: 'Left',
1234
+ type: 'number',
1235
+ min: 0,
1236
+ max: 96,
1237
+ admin: {
1238
+ width: '25%'
1239
+ }
1240
+ }),
1241
+ ]
1242
+ }
1243
+ ],
1244
+ admin: {
1245
+ description: 'Definisce lo spazio interno generale, orizzontale, verticale o per ciascun lato.',
1246
+ },
1247
+ };
1248
+ };
1249
+
690
1250
  var UserRole;
691
1251
  (function (UserRole) {
692
1252
  UserRole["ADMIN"] = "admin";
@@ -719,5 +1279,5 @@ const fieldRoles = (override) => ({
719
1279
  },
720
1280
  });
721
1281
 
722
- export { TailwindViewportHeights as T, fieldText as a, fieldArray as b, fieldUpload as c, fieldSelect as d, TailwindContainerWidths as e, fieldCheckbox as f, TailwindTextSizes as g, TailwindHeights as h, index as i, fieldRoles as j };
723
- //# sourceMappingURL=fieldRoles-bNqKk0DO.js.map
1282
+ export { TailwindTextSizes as T, fieldText as a, fieldArray as b, fieldUpload as c, fieldSelect as d, fieldThemeColor as e, fieldCheckbox as f, fieldRelationship as g, fieldSectionTabs as h, index as i, fieldConfigProps as j, fieldContainerProps as k, fieldContainerWidths as l, fieldContentProps as m, fieldHeights as n, fieldMargins as o, fieldNumber as p, fieldPaddings as q, fieldRichText as r, fieldRoles as s, fieldSectionProps as t, fieldViewportHeights as u };
1283
+ //# sourceMappingURL=fieldRoles-BbW92YWL.js.map