Coder Social home page Coder Social logo

beapi / beapi-frontend-framework Goto Github PK

View Code? Open in Web Editor NEW
67.0 17.0 17.0 52.6 MB

WordPress friendly Front-End framework.

Home Page: https://beapi.fr

CSS 0.11% JavaScript 18.04% PHP 37.33% Smarty 0.24% SCSS 44.28%
wordpress wordpress-theme framework frontend starter-theme

beapi-frontend-framework's Issues

Editor style

Webpack génère un fichier css dédié au wysiwyg dans dist/assets/editor-style.css
J'essaie de l'ajouter mais sans succes, mon commit : 2a67b1f

BFF Windows 10 & serveur local

Il y a des petits ajustements à apporter pour faire tourner le serveur local sous windows 10.

Dans le package.json, dans le script "start", il faut ajouter un & entre dev et webpack :
NODE_ENV=dev & webpack

Et dans server.js, cette ligne pose problème :
proxy: 'http://[::1]:' + config.port,

Le serveur local se bloque en infinite loop. Du coup il suffit de changer pour :
proxy: 'http://localhost:' + config.port,

Je n'ai pas testé sur mac si ça fonctionnait.

font-size of titles

Je trouve que c'est un peu la pagaille dans la mixin title dans _mixin.scss

//Title mixins
@mixin title($size: md) {
	font-weight: 700;
	line-height: $heading-line-height;
	font-family: $customfont-2;

	.fonts-loading & {
		font-family: $font-sansserif;
	}

	@if $size == XXL {
		font-size: 40px;

		@include breakpoints(sm) {
			font-size: 40px*1.5;
		}
	}
	@if $size == XL {
		font-size: 36px;

		@include breakpoints(sm) {
			font-size: 36px*1.5;
		}
	}
	@if $size == L {
		font-size: 32px;

		@include breakpoints(sm) {
			font-size: 32px*1.5;
		}
	}
	@if $size == M {
		font-size: 28px;

		@include breakpoints(sm) {
			font-size: 28px*1.5;
		}
	}
	@if $size == S {
		font-size: 24px;

		@include breakpoints(sm) {
			font-size: 24px*1.5;
		}
	}
	@if $size == XS {
		font-size: 20px;

		@include breakpoints(sm) {
			font-size: 20*1.5;
		}
	}
}

Je trouve que ça ne donne pas un résultat satisfaisant en terme de hiérarchisation et il manque le "px" pour le XS en breakpoints sm. Il faudrait je pense trouve un système plus smart pour cela.

IE11 : abandon support FRONT (Tech days #1)

ACTIONS SUPPRESSION

  • Suppression appel polyfill.io / + src/js/polyfill/picturefill.js (+ appel)
  • Mise a jour conf browserlist / babel
  • SCSS : suppression mixin polyfill object-fit

Pas d'action mais pour info :

ACTIONS AJOUT

  • Team bisounours/gdp : pédagogie client + Mention non support IE11 front dans CDC (si client veut, il insiste, mais il paie)
  • Build : outil orienté esbuild load au lieu de babel

POSSIBILITES CSS

  • Utilisation CSS grid
  • Utilisation Variables CSS
  • Functions CSS natives (ex clamp, min/max, ...)
  • ...

Clean BFF (Tech days #1)

Traiter #165 au préalable

A supprimer :

  • Service Sidebar
  • Functions.php : suppression des require (qui ne sont utilisés que pour les helpers, qui pourraient donc passer en plugin/dépendances (cf. au-dessus)). cf #165

Helpers - Svg

Les fonctions the_icon et get_the_icon ne devraient elles pas retourner une chaîne vide si l'icône est indéfinie (dans le cas d'une utilisation avec un champ acf par exemple) :

the_icon( get_field( 'icon' ) ); // -> return '<svg class="icon icon-" ...</svg>'

accessibility helper

remove, free the title attribute in the bff template helpers.
it should be optional. see PR

LibSass est déprécié

https://sass-lang.com/blog/libsass-is-deprecated

After much discussion among the Sass core team, we’ve come to the conclusion that it’s time to officially declare that LibSass and the packages built on top of it, including Node Sass, are deprecated. For several years now, it’s been clear that there’s simply not enough engineering bandwidth behind LibSass to keep it up-to-date with the latest developments in the Sass language (for example, the most recent new language feature was added in November 2018). As much as we’ve hoped to see this pattern turn around, even the excellent work of long-time LibSass contributors Michael Mifsud and Marcel Greter couldn’t keep up with the fast pace of language development in both CSS and Sass.

https://github.com/sass/dart-sass
https://webpack.js.org/loaders/sass-loader/

esc_attr sur l'attribut title de the_link()

Il faudrait rajouter un esc_attr() pour l'attribut title par exemple afin d'éviter d'avoir des chevrons qui se glissent et qui faussent la lecture du HTML. J'ai eu un bug d'affichage car j'ai eu ce cas.

Chargement conditionnel des dépendances et minification indépendante de code métier

Dans la même optique d'optimisation du chargement d'un site que la mise en place du "Deffer", serait-il possible de gérer le chargement conditionnel de dépendances et la minification indépendante de code métier ?

Je m'explique, sur certaines pages, il est nécessaire d'avoir Masonry, sur d'autres, Isotope, etc. Mais il n'y a aucun intérêt d'avoir le code métier systématiquement chargé dans le scripts.min.

Prenons un exemple, j'ai uniquement besoin de Masonry sur ma Homepage :

  • Est-ce que charger 2 fichiers minifiés (moins lourd), uniquement sur la homepage, n'est pas moins rapide qu'un seul (script) plus lourd ?
  • Mais également avoir un seul fichier minifé (script) plus léger sur toutes les autres pages, ne nécessitant pas de code métier JavaScript Masonry, ne serait pas plus rapide ?

De même, conditionner le chargement des dépendances, par exemple Mansonry uniquement sur la homepage, ce qui réduit le nombre de fichiers chargés n'améliorerait pas les temps de chargement ?

Problème de condition dans Assets.php

@Rahe ,

Je suis en train de migrer le BFF sur Webpack 5, j'ai mis en place sur ma machine une instance Lando à partir du skeleton comme si j'initialisais une nouveau projet comme c'est indiqué sur Notion.

J'ai rencontré un soucis sur l'import du script app.js dans Services/Assets.php

// Async and footer
$file = ( ! defined( 'SCRIPT_DEBUG' ) || SCRIPT_DEBUG === false ) ? $this->get_min_file( 'js' ) : 'app.js';
$this->assets_tools->register_script( 'scripts', 'dist/' . $file, $scripts_dependencies, $theme->get( 'Version' ), true );

$file retourne un boolean alors qu'il devrait retourner une string.

Remove favicons node task from BFF

In order to reduce the node_modules/ size, @Cocola suggested to remove favicons task from BFF.

  • Remove favicons dependency
  • Remove scripts/favicon.js script
  • Remove npm run favicon from package.json
  • Remove unused <link> in src/templates/partials/header.php
  • Remove unused <link> in header WordPress side

Compatibilty scripts loader FacetWP

Hi team,

The FacetWP plugin loads at wp_footer () but our main script (scripts.min.js // app.min.js) loads before.
As a result, we do not have access to the FW object and therefore cause an error in the loading of the pages.

Should not we, load our scripts to wp_footer ()?

Thanks

BFF Front + back

J'ai commencé à bosser sur une base thème BFF Front+Back avec autoload et modernisation.
Je suis passé sur les projets récents pour récupérer et isoler les composants récurrents et leur intégration.
Je suis sur une branchz du bff et c'st un gros BROUILLON donc faudra potentiellement refactor, commenter et remplir le readme/wiki pour l'utilisation de celui-ci.

Si jamais vous voyez des composants manquants, listez les que l'on puisse les ajouter.

https://github.com/BeAPI/beapi-frontend-framework/tree/feature/starter-php

Support Gutenberg

Support gutenberg custom CSS files from theme :

<?php 

add_theme_support( 'editor-styles' );
add_editor_style( 'style-editor.css' );

Le preload CSS ne fonctionne pas sur Firefox

Actuellement le preload CSS ne fonctionne pas sur Firefox ce qui nous oblige à le désactiver sur les projets. L'action se trouve dans assets-css-async.php au même endroit que le chargement du script JS de chargements des fonts.

Soit on désactive le preload CSS en retirant l'action : add_action( 'wp_head', [ $this, 'load_css' ], 0 );

Soit on trouve une alternative pour le preload CSS : https://www.filamentgroup.com/lab/load-css-simpler/

Utilisation d'une solution de guide de styles pour l'intégration statique

Une solution du type Fractal : https://fractal.build/

Avantages :

  • orienté composants
  • qualité ++
  • pratique ++ (on peut faire des variantes de composants)
  • construction d'un guide de styles qui pourra être utilisé par n'importe quel dév arrivant sur le projet (bibliothèque de composants)
  • outil final peut être vendu au client au besoin
  • intégration dans les VRAIS fichiers du thème wordpress (pas de dossier SRC) qui évite la copie/doublonnage en passage back

ACF Required

ACF est obligatoire pour faire fonctionner le thème.Pouvons nous rendre la dépendance à ce plugin facultative ? Cela permettrait d'avoir un starter plus accessible à la communauté.

Helpers d'affichage(Tech days #1)

Hello,

Afin de capitaliser sur les fonctions écrites dans les projets, il est nécessaire d'intégrer les helpers de templating dans le BFF afin d'éviter tout copier/coller.
Mais aussi de créer des tests exhaustifs de ces mêmes fonctions :

  1. Affichage de liens complexes
  2. Affichage d'images
  3. Affichage de textes divers (échapés, kses etc.)
  4. etc.

L'intérêt de ces fonctions est :

  • Avoir un comportement par défaut, exemple sur les liens d'avoir le target noopener
  • Gérer du before/after pourl'affichage conditionnel de l'entité englobante
  • Echapper au plus tard la donnée dans le thème (late escape)

Exemple sur les liens :

Theme\helpers\links\the_link(
	[
		'href'   => '#' . $testimony_id,
		'title' => 'My title',
		'data-seo-target' => null,
		'target' => 'no-noop',
		'class' => '..',
	],
	[
		'before'    => '<h3 class="card__title title-h4">',
		'after' => '</h3>',
	]
);

Le premier argument est tous les attributs du lien à avoir, le null sur le data-seo-target permet de dire que l'on veut uniquement l'attribut d'affiché.
Le second argument permet de passer de la configuration comme un before/after.
Toutes les données sont échappées en interne sur du esc_attr, le href sur du esc_url.
Puis créer une fonction pour gérer les liens ACF en particulier

Theme\Helpers\Links\the_acf_link(
	[
		'field => 'my_field',
		'data-seo-target' => null,
		'target' => 'no-noop',
		'class' => '..',
	],
	[
		'before'    => '<h3 class="card__title title-h4">',
		'after' => '</h3>',
	]
);

Le but étant d'avoir la même structure que l'on peut avoir avec les SVG :

  1. Un service pour implémenter les méthodes
  2. Des fonctions helpers pour les exploiter facilement

Nécessaire pour chaque fonction, être :

  • Filtrable : possibilité de filter les arguments et rendu avant utilisation (exemple: gestion des "BBcodes") avec des hooks
  • Spécifique : pas de fonction qui fait tout ou essaye de gérer tous les cas seule
  • Securisée : toute donnée est échapée/filtrée (esc_html, esc_attr, esc_url etc.)
  • Performante : ne doit pas introduire de problème de performance

Du coup, quels sont vos retours ? quelles fonctions peuvent être implémentées dans le BFF ?
Je pense notamment à la fonction qui permet de récupérer une page en fonction de son template.

@petitphp @francoistibo @ptesei @asadowski10 @firestar300 @n-langle @samikerb @ecorica @lphoumpakka

Deregister blocs et variations

Avoir une méthode pour deregister des blocs en PHP
Avoir une méthode pour deregister des varations de blocs en JS par un script général et déclartion par PHP

Workflow to use, after install

Hi there!

I'm testing your framework to see how you works on your projects, by curiosity. Everything works fine, and the install guide was perfect.

Now i'm trying to build a little theme based on BFF, but I don't see how you works with the template files. If I understand, you have a /html folder with the basics files (header.php, style.css + your custom hierarchy).

But, when you start a theme, you flush the index.php file with the File Directory Listing Script and you start your front-end work on this /html folder? Do you drop the files that you don't use, and you make all the dynamic parts (template tags, ACF, Gravity Forms...) after all html work?

Can I have more details on your Workflow?

This is not a real issue, it's more a question to understand how you use it on the pure templating part.

Thanks for you help, and your share!

Manifest wrong path

Le manifest est généré dans le dossier dist/assets/img/favions, et le manifest va chercher les icones ici par exemple : dist/assets/img/favicons/android-chrome-36x36.png.

Il faut soit générer le manifest à la racine, soit changer le path des icones.

TODO - CSS

  • Supprimer card.scss, appearance.scss
  • Remettre appearance: none; sur la mixin button

Ajouter de base le style page login

[A discuter]

  • feuille de style dédiée dans BFF, dans le dossier src/scss (stylesheet minifiée toute seule via webpack (l'inclure dans les settings webpack) dans dist pour l'appeler via le hook add_action('login_head') dans le service assets
  • logo (SVG dans l'idéal) dédié à la page login stocké dans src/img/static

Handle crop option at location level

Hello @asadowski10,

Il faudrait qu'on voit ensemble pour faire en sorte de gérer le crop au niveau du location.
Du coup pouvoir avoir 2 images sizes similaires mais avec un clé différente si la valeur du crop est différente.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.