@geekron/strapi 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -47498,7 +47498,8 @@ function SortableTree({
47498
47498
  defaultItems = DEFAULT_ITEMS,
47499
47499
  indicator = false,
47500
47500
  indentationWidth = DEFAULT_INDENTATION_WIDTH,
47501
- removable
47501
+ removable,
47502
+ onChange
47502
47503
  }) {
47503
47504
  const {
47504
47505
  items,
@@ -47550,6 +47551,16 @@ function SortableTree({
47550
47551
  offset: offsetLeft
47551
47552
  };
47552
47553
  }, [flattenedItems, offsetLeft]);
47554
+ const isInitialMount = import_react8.useRef(true);
47555
+ import_react8.useEffect(() => {
47556
+ if (isInitialMount.current) {
47557
+ isInitialMount.current = false;
47558
+ return;
47559
+ }
47560
+ if (onChange) {
47561
+ onChange(items);
47562
+ }
47563
+ }, [items, onChange]);
47553
47564
  const announcements = useAnnouncements(items, indicator, indentationWidth);
47554
47565
  const handleDragEnd = ({ active, over }) => {
47555
47566
  handleDragCancel();
@@ -47642,6 +47653,9 @@ var DataNested = ({
47642
47653
  required
47643
47654
  }) => {
47644
47655
  const field = import_admin3.useField(name);
47656
+ const handleChange = (value) => {
47657
+ field.onChange(name, value);
47658
+ };
47645
47659
  return /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(import_design_system5.Field.Root, {
47646
47660
  name,
47647
47661
  id: name,
@@ -47655,7 +47669,9 @@ var DataNested = ({
47655
47669
  /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(SortableTree, {
47656
47670
  collapsible: true,
47657
47671
  indicator: true,
47658
- removable: true
47672
+ removable: true,
47673
+ defaultItems: field.value || [],
47674
+ onChange: handleChange
47659
47675
  }, undefined, false, undefined, this),
47660
47676
  /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(import_design_system5.Field.Hint, {}, undefined, false, undefined, this),
47661
47677
  /* @__PURE__ */ jsx_dev_runtime23.jsxDEV(import_design_system5.Field.Error, {}, undefined, false, undefined, this)
@@ -47543,7 +47543,8 @@ function SortableTree({
47543
47543
  defaultItems = DEFAULT_ITEMS,
47544
47544
  indicator = false,
47545
47545
  indentationWidth = DEFAULT_INDENTATION_WIDTH,
47546
- removable
47546
+ removable,
47547
+ onChange
47547
47548
  }) {
47548
47549
  const {
47549
47550
  items,
@@ -47595,6 +47596,16 @@ function SortableTree({
47595
47596
  offset: offsetLeft
47596
47597
  };
47597
47598
  }, [flattenedItems, offsetLeft]);
47599
+ const isInitialMount = useRef2(true);
47600
+ useEffect2(() => {
47601
+ if (isInitialMount.current) {
47602
+ isInitialMount.current = false;
47603
+ return;
47604
+ }
47605
+ if (onChange) {
47606
+ onChange(items);
47607
+ }
47608
+ }, [items, onChange]);
47598
47609
  const announcements = useAnnouncements(items, indicator, indentationWidth);
47599
47610
  const handleDragEnd = ({ active, over }) => {
47600
47611
  handleDragCancel();
@@ -47687,6 +47698,9 @@ var DataNested = ({
47687
47698
  required
47688
47699
  }) => {
47689
47700
  const field = useField2(name);
47701
+ const handleChange = (value) => {
47702
+ field.onChange(name, value);
47703
+ };
47690
47704
  return /* @__PURE__ */ jsxDEV23(Field2.Root, {
47691
47705
  name,
47692
47706
  id: name,
@@ -47700,7 +47714,9 @@ var DataNested = ({
47700
47714
  /* @__PURE__ */ jsxDEV23(SortableTree, {
47701
47715
  collapsible: true,
47702
47716
  indicator: true,
47703
- removable: true
47717
+ removable: true,
47718
+ defaultItems: field.value || [],
47719
+ onChange: handleChange
47704
47720
  }, undefined, false, undefined, this),
47705
47721
  /* @__PURE__ */ jsxDEV23(Field2.Hint, {}, undefined, false, undefined, this),
47706
47722
  /* @__PURE__ */ jsxDEV23(Field2.Error, {}, undefined, false, undefined, this)
@@ -52,21 +52,6 @@ var schema_default = {
52
52
  }
53
53
  },
54
54
  attributes: {
55
- favicon: {
56
- type: "media",
57
- pluginOptions: {
58
- i18n: {
59
- localized: true
60
- }
61
- },
62
- multiple: false,
63
- required: false,
64
- allowedTypes: [
65
- "images",
66
- "files",
67
- "videos"
68
- ]
69
- },
70
55
  title: {
71
56
  type: "string",
72
57
  pluginOptions: {
@@ -150,6 +135,15 @@ var schema_default2 = {
150
135
  }
151
136
  },
152
137
  required: true
138
+ },
139
+ items: {
140
+ type: "customField",
141
+ pluginOptions: {
142
+ i18n: {
143
+ localized: true
144
+ }
145
+ },
146
+ customField: "plugin::website.dataNested"
153
147
  }
154
148
  }
155
149
  };
@@ -191,17 +185,8 @@ var schema_default3 = {
191
185
  }
192
186
  },
193
187
  attributes: {
194
- enabled: {
195
- type: "boolean",
196
- pluginOptions: {
197
- i18n: {
198
- localized: true
199
- }
200
- },
201
- required: true,
202
- default: true
203
- },
204
188
  title: {
189
+ required: true,
205
190
  type: "string",
206
191
  pluginOptions: {
207
192
  i18n: {
@@ -209,37 +194,32 @@ var schema_default3 = {
209
194
  }
210
195
  }
211
196
  },
212
- logo: {
213
- type: "media",
197
+ url: {
198
+ required: true,
199
+ type: "string",
214
200
  pluginOptions: {
215
201
  i18n: {
216
202
  localized: true
217
203
  }
218
- },
219
- multiple: false,
220
- allowedTypes: [
221
- "images"
222
- ]
204
+ }
223
205
  },
224
- icon: {
225
- type: "media",
206
+ enabled: {
207
+ type: "boolean",
226
208
  pluginOptions: {
227
209
  i18n: {
228
210
  localized: true
229
211
  }
230
212
  },
231
- multiple: false,
232
- allowedTypes: [
233
- "images"
234
- ]
213
+ default: true
235
214
  },
236
- url: {
237
- type: "string",
215
+ index: {
216
+ type: "boolean",
238
217
  pluginOptions: {
239
218
  i18n: {
240
219
  localized: true
241
220
  }
242
- }
221
+ },
222
+ default: false
243
223
  },
244
224
  robots: {
245
225
  type: "text",
@@ -265,22 +245,21 @@ var schema_default3 = {
265
245
  }
266
246
  }
267
247
  },
268
- inquiryEmail: {
269
- type: "email",
248
+ gtagId: {
249
+ type: "string",
270
250
  pluginOptions: {
271
251
  i18n: {
272
252
  localized: true
273
253
  }
274
254
  }
275
255
  },
276
- index: {
277
- type: "boolean",
256
+ inquiryEmail: {
257
+ type: "email",
278
258
  pluginOptions: {
279
259
  i18n: {
280
260
  localized: true
281
261
  }
282
- },
283
- default: false
262
+ }
284
263
  }
285
264
  }
286
265
  };
@@ -304,8 +283,65 @@ var site_default4 = {
304
283
  services: site_default3,
305
284
  routes: site_default2
306
285
  };
307
- // server/src/api/translation/content-types/translation/schema.json
286
+ // server/src/api/theme/content-types/theme/schema.json
308
287
  var schema_default4 = {
288
+ kind: "singleType",
289
+ collectionName: "themes",
290
+ info: {
291
+ singularName: "theme",
292
+ pluralName: "themes",
293
+ displayName: "Theme",
294
+ description: "Theme setting"
295
+ },
296
+ options: {
297
+ draftAndPublish: true
298
+ },
299
+ pluginOptions: {
300
+ i18n: {
301
+ localized: true
302
+ }
303
+ },
304
+ attributes: {
305
+ styles: {
306
+ type: "text",
307
+ pluginOptions: {
308
+ i18n: {
309
+ localized: true
310
+ }
311
+ }
312
+ },
313
+ scripts: {
314
+ type: "text",
315
+ pluginOptions: {
316
+ i18n: {
317
+ localized: true
318
+ }
319
+ }
320
+ }
321
+ }
322
+ };
323
+
324
+ // server/src/api/theme/controllers/theme.ts
325
+ var import_strapi10 = require("@strapi/strapi");
326
+ var theme_default = import_strapi10.factories.createCoreController("plugin::website.theme");
327
+
328
+ // server/src/api/theme/routes/theme.ts
329
+ var import_strapi11 = require("@strapi/strapi");
330
+ var theme_default2 = import_strapi11.factories.createCoreRouter("plugin::website.theme");
331
+
332
+ // server/src/api/theme/services/theme.ts
333
+ var import_strapi12 = require("@strapi/strapi");
334
+ var theme_default3 = import_strapi12.factories.createCoreService("plugin::website.theme");
335
+
336
+ // server/src/api/theme/index.ts
337
+ var theme_default4 = {
338
+ schema: schema_default4,
339
+ controllers: theme_default,
340
+ services: theme_default3,
341
+ routes: theme_default2
342
+ };
343
+ // server/src/api/translation/content-types/translation/schema.json
344
+ var schema_default5 = {
309
345
  kind: "collectionType",
310
346
  collectionName: "translations",
311
347
  info: {
@@ -345,59 +381,45 @@ var schema_default4 = {
345
381
  };
346
382
 
347
383
  // server/src/api/translation/controllers/translation.ts
348
- var import_strapi10 = require("@strapi/strapi");
349
- var translation_default = import_strapi10.factories.createCoreController("plugin::website.translation");
384
+ var import_strapi13 = require("@strapi/strapi");
385
+ var translation_default = import_strapi13.factories.createCoreController("plugin::website.translation");
350
386
 
351
387
  // server/src/api/translation/routes/translation.ts
352
- var import_strapi11 = require("@strapi/strapi");
353
- var translation_default2 = import_strapi11.factories.createCoreRouter("plugin::website.translation");
388
+ var import_strapi14 = require("@strapi/strapi");
389
+ var translation_default2 = import_strapi14.factories.createCoreRouter("plugin::website.translation");
354
390
 
355
391
  // server/src/api/translation/services/translation.ts
356
- var import_strapi12 = require("@strapi/strapi");
357
- var translation_default3 = import_strapi12.factories.createCoreService("plugin::website.translation");
392
+ var import_strapi15 = require("@strapi/strapi");
393
+ var translation_default3 = import_strapi15.factories.createCoreService("plugin::website.translation");
358
394
 
359
395
  // server/src/api/translation/index.ts
360
396
  var translation_default4 = {
361
- schema: schema_default4,
397
+ schema: schema_default5,
362
398
  controllers: translation_default,
363
399
  services: translation_default3,
364
400
  routes: translation_default2
365
401
  };
366
402
 
367
403
  // server/src/api/index.ts
404
+ var modules = { translation: translation_default4, common: common_default4, menu: menu_default4, site: site_default4, theme: theme_default4 };
368
405
  var contentTypes = {};
369
406
  var controllers = {};
370
407
  var routes = {};
371
408
  var services = {};
372
- contentTypes.common = {
373
- schema: common_default4.schema
374
- };
375
- contentTypes.menu = {
376
- schema: menu_default4.schema
377
- };
378
- contentTypes.site = {
379
- schema: site_default4.schema
380
- };
381
- contentTypes.translation = {
382
- schema: translation_default4.schema
383
- };
384
- routes.common = common_default4.routes;
385
- routes.menu = menu_default4.routes;
386
- routes.site = site_default4.routes;
387
- routes.translation = translation_default4.routes;
388
- services.common = common_default4.services;
389
- services.menu = menu_default4.services;
390
- services.site = site_default4.services;
391
- services.translation = translation_default4.services;
392
- controllers.common = common_default4.controllers;
393
- controllers.menu = menu_default4.controllers;
394
- controllers.site = site_default4.controllers;
395
- controllers.translation = translation_default4.controllers;
409
+ Object.keys(modules).forEach((moduleName) => {
410
+ const module2 = modules[moduleName];
411
+ services[moduleName] = module2.services;
412
+ routes[moduleName] = module2.routes;
413
+ controllers[moduleName] = module2.controllers;
414
+ contentTypes[moduleName] = {
415
+ schema: module2.schema
416
+ };
417
+ });
396
418
  var api_default = {
397
419
  contentTypes,
398
420
  controllers,
399
- routes,
400
- services
421
+ services,
422
+ routes
401
423
  };
402
424
 
403
425
  // server/src/bootstrap.ts
@@ -668,35 +690,14 @@ var destroy = ({ strapi: strapi2 }) => {
668
690
  strapi2.log.info("dashboard server plugin: bootstrap");
669
691
  };
670
692
  var destroy_default = destroy;
671
-
672
- // server/src/components/index.ts
673
- var createComponent = (strapi2, { name, displayName, icon, attributes }) => {
674
- const category = "website";
675
- if (strapi2.components[`${category}.${name}`])
676
- return;
677
- const builder = strapi2.plugin("content-type-builder");
678
- builder.services.components.createComponent({
679
- component: {
680
- icon,
681
- category,
682
- displayName,
683
- attributes
684
- }
685
- }).then((r) => {
686
- console.log(`create ${name} component`, r);
687
- });
688
- };
689
- var registerComponents = (strapi2, components) => {
690
- components.forEach((component) => {
691
- createComponent(strapi2, component);
692
- });
693
- };
694
-
695
- // server/src/components/banner.ts
696
- var component = {
697
- name: "banner",
698
- icon: "landscape",
699
- displayName: "Banner",
693
+ // server/src/components/schema/banner.json
694
+ var banner_default = {
695
+ collectionName: "components_website_banners",
696
+ info: {
697
+ displayName: "Banner",
698
+ icon: "landscape"
699
+ },
700
+ options: {},
700
701
  attributes: {
701
702
  title: {
702
703
  type: "string"
@@ -706,51 +707,24 @@ var component = {
706
707
  },
707
708
  description: {
708
709
  type: "string"
709
- },
710
- image: {
711
- type: "media",
712
- multiple: false,
713
- required: true,
714
- allowedTypes: ["images"]
715
- },
716
- mImage: {
717
- type: "media",
718
- multiple: false,
719
- allowedTypes: ["images"]
720
710
  }
721
711
  }
722
712
  };
723
- var banner_default = component;
724
-
725
- // server/src/components/logo.ts
726
- var component2 = {
727
- name: "logo",
728
- icon: "picture",
729
- displayName: "Logo",
730
- attributes: {
731
- main: {
732
- type: "media",
733
- multiple: false,
734
- allowedTypes: ["images"]
735
- },
736
- sub: {
737
- type: "media",
738
- multiple: false,
739
- allowedTypes: ["images"]
740
- }
741
- }
742
- };
743
- var logo_default = component2;
744
-
745
- // server/src/components/social.ts
746
- var component3 = {
747
- name: "social",
748
- icon: "paperPlane",
749
- displayName: "Social",
713
+ // server/src/components/schema/social.json
714
+ var social_default = {
715
+ collectionName: "components_website_socials",
716
+ info: {
717
+ displayName: "Social",
718
+ icon: "paperPlane"
719
+ },
720
+ options: {},
750
721
  attributes: {
751
722
  type: {
752
723
  type: "enumeration",
753
- enum: ["url", "qrcode"]
724
+ enum: [
725
+ "url",
726
+ "qrcode"
727
+ ]
754
728
  },
755
729
  url: {
756
730
  type: "string",
@@ -765,6 +739,14 @@ var component3 = {
765
739
  }
766
740
  }
767
741
  },
742
+ icon: {
743
+ type: "customField",
744
+ customField: "plugin::website.iconPicker"
745
+ },
746
+ color: {
747
+ type: "customField",
748
+ customField: "plugin::website.colorPicker"
749
+ },
768
750
  qrcode: {
769
751
  type: "media",
770
752
  conditions: {
@@ -778,43 +760,50 @@ var component3 = {
778
760
  }
779
761
  },
780
762
  multiple: false,
781
- allowedTypes: ["images"]
763
+ allowedTypes: [
764
+ "images"
765
+ ]
782
766
  }
783
767
  }
784
768
  };
785
- var social_default = component3;
786
769
 
787
- // server/src/components/video.ts
788
- var component4 = {
789
- name: "video",
790
- icon: "play",
791
- displayName: "Video",
792
- attributes: {
793
- url: {
794
- type: "string",
795
- required: true
796
- },
797
- title: {
798
- type: "string"
799
- },
800
- image: {
801
- type: "media",
802
- multiple: false,
803
- allowedTypes: ["images"]
770
+ // server/src/components/index.ts
771
+ var schemas = { banner: banner_default, social: social_default };
772
+ var createComponent = (strapi2, { name, displayName, icon, attributes }) => {
773
+ const category = "website";
774
+ if (strapi2.components[`${category}.${name}`])
775
+ return;
776
+ const builder = strapi2.plugin("content-type-builder");
777
+ builder.services.components.createComponent({
778
+ component: {
779
+ icon,
780
+ category,
781
+ displayName,
782
+ attributes
804
783
  }
805
- }
784
+ }).then(() => {
785
+ console.log(`create ${name} component`);
786
+ });
806
787
  };
807
- var video_default = component4;
788
+ var registerComponents = (strapi2, components) => {
789
+ components.forEach((component) => {
790
+ createComponent(strapi2, component);
791
+ });
792
+ };
793
+ var components = [];
794
+ Object.entries(schemas).forEach(([name, schema]) => {
795
+ components.push({
796
+ name,
797
+ icon: schema.info.icon,
798
+ displayName: schema.info.displayName,
799
+ attributes: schema.attributes
800
+ });
801
+ });
808
802
 
809
803
  // server/src/register.ts
810
804
  var register = ({ strapi: strapi2 }) => {
805
+ registerComponents(strapi2, components);
811
806
  strapi2.log.info("website server plugin: register");
812
- registerComponents(strapi2, [
813
- banner_default,
814
- social_default,
815
- logo_default,
816
- video_default
817
- ]);
818
807
  strapi2.customFields.register([
819
808
  {
820
809
  name: "slugInput",